# clothoids

324 views

### Franz Reiter

Aug 30, 2007, 11:14:07 AM8/30/07
Hallo,

as far as i know, a clothoid is a curve between two lines with variable .
Thus you can represent cyloids with very few parameters: the 2 Points/vectors,

So the structure of a clothoid could be:
{Point *p1, *p2; Vector *v1; double radius r1, r2;} CurvClotho;
(maybe the vector for r=infinite is useful also) ..

The definition could be something like:
CURVE<curveNr> = CLOTH <startpoint> <startVektor> <startRadius>

So this could be also a basic objectType of a cad-system; why not ?
To intersect this curve with all other kinds of curves you need a parametrized
description, thats all ..

Franz

### martin_gnu

Aug 30, 2007, 1:28:00 PM8/30/07

> So the structure of a clothoid could be:
> {Point *p1, *p2; Vector *v1; double radius r1, r2;} CurvClotho;

from my point of view a clothoid can be like this:
{Point *p1; Vector *v1; double r_max; double A_parameter;}
CurvClotho;
p2 is redundant information.
Perhaps it´s good a precision parameter for the number of points
calculates between R=infinite to R_max (minimum radious value). In a
privative software MDT-TCP the clothoid primitive is a group of short
lines.

there are a file called MUPAD_script_clotoids.txt. It´s a clothoid
script in MUPAD language created by me.
there are a file called clothoids.odt. It´s a clothoid tutorial to
programmer created by me.
there are a file called clotoides_castellano.odt. It´s a complete
tutorial to clothoid created by me, but it´s in spanish. I hope
traslate to english... In the page 9 and 10 we have formulas to create
our own clothoid formulas

Regards, Martin Vales

### martin_gnu

Aug 30, 2007, 2:03:45 PM8/30/07

### martin_gnu

Aug 31, 2007, 11:41:59 AM8/31/07

Microstation V8 has 3 kind of spirals (they are b-splines curves
primitives):

clothoid (initial degree, final degree, length, tolerance (number of
knots and poles of b-splines) )

You need define 3 points on the screen to know the vector, and other
point to up/down side...

In surveying i think that this clothoid don´t works.

In Autocad every entity can be a derived type and can have auxiliar
information.

In a MDT-TCI (Autocad plugin) they define several new derived
primitives like MDT_point primitive like a group of a point, 2 texts
and a block.
In Autocad you can explode this MDT_point and it becomes on the
Autocad basic primitives (point, 2 text and a block).

A clothoid perhaps can be b-splines and the plugins add adicional type

Regards.
Martin.

### Franz Reiter

Sep 1, 2007, 4:28:17 AM9/1/07
Hallo,

concerning:

> > {Point *p1, *p2; Vector *v1; double radius r1, r2;} CurvClotho;
>
> from my point of view a clothoid can be like this:
> {Point *p1; Vector *v1; double r_max; double A_parameter;}
> CurvClotho;
> p2 is redundant information.

2D or 3D ?
My proposal was, that with p1, v1 and p2 you have the 3D-plane defined (!)
where the clotho goes.

The content of the datarecord should describe the clothoid without the need of
any other information.

The clothoid can connect a line and a circle (r1=inf, r2=rCir); or 2 circles
(r1=rCir1, r2=rCir2).

Now we would have to produce a polygon from this datarecord.
The accuracy (the deviation) shall be defined; for example, deviation shall
not exceed 10mm.

In the mupad-script i do not understand where L comes from.

Are there programs in C or Basic for clothoids ?

Franz.

### "Martín RV (OPENGeoMap)"

Sep 1, 2007, 8:13:25 AM9/1/07
Hi all:

```2D or 3D ?
My proposal was, that with p1, v1 and p2 you have the 3D-plane defined (!)
where the clotho goes.
```
It´s sound very  interesting but i only see plugins for surveyors clothoids in the horizontal plane. In surveying you define the horizontal plane of the Highway like this :"clothoid, circle, clothoid" and the radius on the begining of the clothoid is always infinite. The clothoid is for get the terrain elevation profile along a clothoid path using a MDT (triangulation)
http://www.earthslot.org/help/tep/terrain_profile_tool.htm
In this graphic you define the future real elevation  profile of the Highway. Perhaps the heights of this new profile can be interesting insert them  into the clothoid but i have never seen that.
Therefore by now i have seen something like that:
1) Highway ("clothoid, circle, clothoid", "clothoid, circle, clothoid","clothoid, circle, clothoid",...)
2) MDT (triangulation to get heights of points on the CAD)
3) terrain elevation profile along a clothoid
4) real elevation profile of the Highway
```The content of the datarecord should describe the clothoid without the need of
any other information.

The clothoid can connect a line and a circle (r1=inf, r2=rCir); or 2 circles
(r1=rCir1, r2=rCir2).
```
The second option is very interesting but i have never seen that, but the CAD would be more complete in the definition of clothoid of course.

```Now we would have to produce a polygon from this datarecord.
The accuracy (the deviation) shall be defined; for example, deviation shall
not exceed 10mm.
```
Yes this is the same that i have seen in several surveying plugins.

```In the mupad-script i do not understand where L comes from.

Are there programs in C or Basic for clothoids ?
```
I don´t know but you only need 2 lines:
x:=L-L^5/(5*fact(2)*(2*R*L)^2)+L^9/(9*fact(4)*(2*R*L)^4)-L^13/(13*fact(6)*(2*R*L)^6)+L^17/(17*fact(8)*(2*R*L)^8)-L^21/(21*fact(10)*(2*R*L)^10)+L^25/(25*fact(12)*(2*R*L)^12)-L^29/(29*fact(14)*(2*R*L)^14)+L^33/(33*fact(16)*(2*R*L)^16)-L^37/(37*fact(18)*(2*R*L)^18):
y:=L^3/(3*fact(1)*(2*R*L)^1)-L^7/(7*fact(3)*(2*R*L)^3)+L^11/(11*fact(5)*(2*R*L)^5)-L^15/(15*fact(7)*(2*R*L)^7)+L^19/(19*fact(9)*(2*R*L)^9)-L^23/(23*fact(11)*(2*R*L)^11)+L^27/(27*fact(13)*(2*R*L)^13)-L^31/(31*fact(15)*(2*R*L)^15)+L^35/(35*fact(17)*(2*R*L)^17):
and this formula:
R=pow(A,2)/L

In mupad script i have  different formulas to study different precision.
to pass to c is very easy:
2^5=pow(2,5)

The L is the lenght from the beginning of the clothoid (when the radious is infinite L=0) and is a variable like R. The A is a constant value and the most important parameter in a clothoid.
A^2=R_infinite*0=R1*L1=R_min*L_max,...
The L value is 0 when the radious is infinite. This is the only point with 0 value of L.
In a clothoid like you say (r1=rCir1, r2=rCir2) in r1 L has a value different of 0 and in r1 too.
Regards.

### "Martín RV (OPENGeoMap)"

Nov 22, 2007, 5:04:52 PM11/22/07
Hi all:

therefore i would like build exporters to OCA from these 2 CADs.

I would like receive advices in the languages to build exporters. I am
working in VBA in Microstation and in VSTA (.NET c#) in Autocad. I need
to develop applications very quickly in my work. Anyway I explain you
all the possibilities, if someone want to work with me in this new
project...:

Autolisp (list. I don´t like this language at all...)
ARX (c++). I like c++, but it´s very difficult for me this API.
VSTA. Visual Studio tools for aplications. Here we can build plugins in
C#. It´s very easy.

MDL (similar to ANSI C, but it´s based in bytecodes). I would like use
this API, but in my work can not use this API.
Microstation basic. Bentley don´t have support in Microstation V8, and
therefore it´s imposible uses this API. I work with this API, but in V8
we have several problems.
VBA. Visual basic for applications. I would like have VSTA like Autocad
but Bentley nowadays don´t want change the technology.

I would like receive advices and communicate this new project to this list.

Regards.

### Franz Reiter

Nov 23, 2007, 3:06:38 AM11/23/07
Hi,

> working in VBA in Microstation and in VSTA (.NET c#) in Autocad. I need
> to develop applications very quickly in my work. Anyway I explain you

have never tried c#;
for Acad-development i make exes with VisualBasic-dotNet.
it is much easier than arx; the classes are better than in vba and vb6.

If you also plan a import (from oca to Acad) let us know how we can help.

Franz

### martin_gnu

Nov 25, 2007, 5:44:53 AM11/25/07

On Nov 23, 9:06 am, Franz Reiter <franz.rei...@cadcam.co.at> wrote:

> have never tried c#;
> for Acad-development i make exes with VisualBasic-dotNet.
> it is much easier than arx; the classes are better than in vba and vb6.
> Let us know your decision.
>
I am working in Microstation nowdays. I am learning the autocad API,
but i think i want work in c#. Reasons:
- I like c/c++ and GTK.
- very similar to c++, more than JAVA.
- good GUI IDE for GTK# in monodevelop (http://www.monodevelop.com/
Image:Stetic-in-monodevelop.png)
- good API in GTK (http://www.mono-project.com/GtkSharp:_Hello_World)

I know we need Visual Studio for Autocad, but i can do GTK# projects
in monodevelop also...

> If you also plan a import (from oca to Acad) let us know how we can help.
>
Yes, i would like have time to this... I only have weekends hehe.
> Franz

Regards.

### Gertwin Groen

Nov 25, 2007, 10:27:34 AM11/25/07
Hi,

On Windows you can use sharpdevelop for C#:
http://www.icsharpcode.net/OpenSource/SD
When working with C# i think you don't need visual studio to build

The Autodesk discussion groups are a good resource if you have
questions about the arx or the dot net api:
http://discussion.autodesk.com/index.jspa

Greetings,
Gertwin

2007/11/25, martin_gnu <openg...@gmail.com>: