To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cad.devOpen lugnet.cad.dev in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / Development / 9677
9676  |  9678
Special: 
[DAT] (requires LDraw-compatible viewer)
Subject: 
Re: Lsynth thoughts.
Newsgroups: 
lugnet.cad.dev
Date: 
Wed, 28 Apr 2004 13:26:01 GMT
Viewed: 
1435 times
  
In lugnet.cad.dev, Kevin L. Clague wrote:
In lugnet.cad.dev, Don Heyse wrote:
Yes, this would be nice if you could make lsynthcp entensible
without recompiling.  Just read the config file.

Yes, then lsynthcp can focus on the synthesis algorithms like
spline, and belts.

I'd love to have an algorithm for non-planar rubber bands.

I've only looked at the hoses so far.  So I don't even know what
the current algorithm for rubber bands looks like, much less how
to improve it.

There are a few things that control hose synthesis; hose type, hose
segment part type, segment orientation, segment diameter, and the
constraints.

Don't forget total number of segments for fixed length hoses.  And
I'm not sure what you're including in "segment orientation", but
subsequent segments of Larry's fake string and subsequent chain
link segments are rotated 90 degrees from each other.  You'd need
language to control that.

Don, the splining algorithm gives us *no* control over the distance
between the resulting spline points.  They get farther apart the
tighter the curve, and closer together when the curvature is lower.

True, for my first cut at the fixed length length rubber hoses
I calculated the total spline length and divided it into 50 segments.
If you put the ends too far apart, you'll get a broken hose.  It
shouldn't be a problem when documenting a real life design though.

You can see what I did here by clicking on the "Diff to previous 1.1"
link:

  http://cvs.sourceforge.net/viewcvs.py/lsynth/lsynth/lsynth/tube.c

I'd like to study the algorithm that Frederick Glockner uses for
true length hoses.  I believe it uses an iterative splining
approach.

I suspect you've got most of the ingredients to do it that way, since
you can easily calculate the total length of the current spline.  The
problem is that you've fixed the end point constraints with the
LS00.DAT parts.  Since Frederick's method automagically creates the
end constraints, he's free to wiggle them around to adjust the length.

I'd like a file format that defines a hose type name, and its
attributes (hose cross section segment, the oriention of the hose
axis in the cross section part, and the outer diameter of the hose).

We might also want some special condiftions for end of hose
issues. e.g. flared hose, or hose ends with special symbols on the
end so we can color code the hose ends, etc.

I'd also like to define the part types used for individual hose
constraints.  Eventually I'd like to add new hose constraint types.
For example, a constraint that says "you have to go through this
point, but I don't care about the orientation of the axis at this
point."

Yes, don't care constraints would make things simpler for many hoses.
I like the LS00.DAT hose constraints, but for some things it might be
easier to work with assumed constraints based on the parts located at
the hose ends.

Examples?

Well, I'd say this contains enough information to make a hose.
The rubber hose comes out of only one end of the 750.dat so we
know enough to generate some basic start and end constraints.

0 WRITE SYNTH BEGIN RUBBER_HOSE 14
1 0 80 -48 -60 1 0 0 0 1 0 0 0 1 750.dat
1 0 -40 -40 -50 0 -1 0 1 0 0 0 0 1 750.dat
0 WRITE SYNTH END

In ldglite I can also generate a ribbed hose from end parts which
contain a single technic pin.  Just look for a subpart called
"connect*.dat" and use it's location and orientation to generate
the end constraint.  Admittedly this requires you to dig deeper
and parse the dat files of the end parts.

Or would it be better for the program calling lsynthcp to have a
function which automatically creates the hose end constraints based
on the hose type and the fixed end parts?

I like the idea of reusing LS00.DAT as much as possible.  I'm not
sure what the advantage is to having different constraint types for
different hose types.

I agree with you there, but LS00.dat needs to be made into a better
tool so you can really see what you're doing with it.  For starters,
maybe it should be transparent, with a line down the center axis, and
a bullseye surrounding the origin (where the hose starts)

Also, I had some trouble visualizing exactly where the hose would
start and end from the LS00.DAT constraint.  Maybe the actual
endpoints of the hose would be better illustrated by adding a bullseye
in a fixed color to the LS00.DAT constraint.

Well, the start and end points are at the LS00.DAT (isn't it obvious? LOL)

/ \ head
] [ stem
[_] base

The origin is where the base meets the stem.

Jennifer Clark suggested that we could put a disk between the base
and stem to indicate the origin of the part.

I'd make it transparent with a colorful center axis line. Put a disk
between the base and the stem with a colorful bullseye on it, and
maybe even make the base and the stem the same diameter tube since a
bullseye disk is a better indicator of the origin than the base-stem
split.  Hmmm, maybe I'll see if I can put this together tonight.

For band synthesis, I'd like to be able to define band types: round
cross section rubber bands, square cross section rubber bands, new
technic chain, old technic chain, plastic linked tread, rubber
tread.  For each type, I'd like to define the cross section part,
its orientation, diameter (if apropo), etc.  > For band constraints,
we need to know the part type, its diameter (or radius), and its
orientation.

I don't think the above looks like stuff that goes into an LDraw
file format, unless we introduce a whole bunch of meta commands.
When it is this far off, is it worth forcing it into the LDraw file
format?  I suppose the advantage is that people can define their
hose type directly in an LDraw file and have it ported around with
it.  Hmmm...

I agree.  Hmmm...

Any input on a format will be warmly welcomed.

I thought you volunteered to write something up for Steve... ;^)

Don



Message has 1 Reply:
  Re: Lsynth thoughts.  [DAT]
 
(...) I envision something more like this. 0 ~LSYNTH constraint part 0 Name: lz00.dat 0 Author: John VanZwieten, Steve Bliss, Kevin Clague, Paul Easter, Don Heyse 0 Unofficial LCad Part 0 CATEGORY Hose 0 1999-05-02 KevinB Added nipple (taken from (...) (21 years ago, 3-May-04, to lugnet.cad.dev)

Message is in Reply To:
  Re: Lsynth thoughts.
 
(...) Yes, then lsynthcp can focus on the synthesis algorithms like spline, and belts. I'd love to have an algorithm for non-planar rubber bands. (...) Don, the splining algorithm gives us *no* control over the distance between the resulting spline (...) (21 years ago, 28-Apr-04, to lugnet.cad.dev)

7 Messages in This Thread:

Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact

This Message and its Replies on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR