REFSKRIPT

; 3dkurve.men
; Zeichnen von 3D-Funktionskurven

SET_VAR a 8
SET_VAR b 2
SET_VAR c 4

; Verwenden Sie bei Winkelfunktionen bitte t, sonst tt
; z.B. (a*tt)-(b*sin(t))
; Sie koennen erstmal fuer x und y die Funktionen einer 2D-Kurve
; aus f_draw.skr und fuer z eine 3. Funktion (z.B. sin(t) oder eine
; Funktion einer anderen 2D-Kurve aus f_draw.skr verwenden.
; MAX ist der gleiche Wert wie bei der Abfrage der oberen 
; Berechnungsgrenze in 2d-kurven.
; Wenn sie mehr Variablen benoetigen, definieren Sie oben
; noch d, e usw.

; Beispiel fuer eine 3D-Kurve:
SET_VAR funcX (a-b)*cos(t)+(c*cos((a/b-1)*t))
SET_VAR funcY (a-b)*sin(t)-(c*sin((a/b-1)*t))
SET_VAR funcZ sin(t*8)

SET_VAR MAX 2

; Wenn sie groebere oder feinere Aufloesung wollen,
; wahlen Sie fuer n statt 16: 8, 32, 64 oder 128

SET_VAR n 16


;***********************************************

SET_VAR PI 3.14159265359

DIV 1.0 n
GET_RESULT STEP 

MUL PI MAX
GET_RESULT MAX

; Interne Variablen
SET_VAR x 0
SET_VAR y 0
SET_VAR t 0.0
SET_VAR tt 0.0

DIV 180 PI
GET_RESULT conv

>LBL_ZEICHNE:

OBJ_NEW 3d_poly 5
GET_RESULT name
>LBL_SCHLEIFE:
; tt um STEP erhoehen
ADD tt STEP
GET_RESULT tt
MUL tt conv
GET_RESULT t
; Koordinaten für den nächsten Punkt berechnen
FUNCTION funcX
GET_RESULT x
FUNCTION funcY
GET_RESULT y
FUNCTION funcZ
GET_RESULT z
; Polygonpunkt erstellen und setzen
GEO_NEW_PT name
GET_RESULT punktnummer
GEO_SET_PT name punktnummer x y z
; Schleife beenden?
IF_GREATER_GOTO MAX tt LBL_SCHLEIFE

RETURN name
