| |
|
|
p.specht
| Das nachstehende Progrämmchen soll den Umgang mit Pie, Arc und Chord-Befehlen etwas logischer machen. Das Beispiel in der Profan-Hilfe berücksichtigt z.B. nicht die gekippte Perspektive bei Tortendiagrammen. Im nachstehenden Machwerk wird genau dafür Sorge getragen, daß die (z.B. Anteils-abhängigen) Winkel stets der angewendeten Perspektive (aka. "Kavalier-Riss") angepasst verlaufen. Angenehmer Nebeneffekt: Die Tortenstück-Seiten laufen nun auch bei sehr breiten, aber nur wenig hohen Diagrammen stets zum Mauscursor hin, was eine manuelle Eingabe enorm erleichtert.
P.S.: Daß das Ding noch wahnsinnig viel zu wünschen über lässt, etwa Farb-, Füll- und Formänderungen, Beschriftungen u.v.a.m., ist klar. Aber immerhin, eine erste lästige (Formel-)Hürde ist nun geschafft. Für wirklich gute Tortendiagramme gibt es gute Include- und PCU-Files in diesem Board!
WindowTitle "SIMPLER PIE-ARC-CHORD-TRAINER":WindowStyle 24:Window 0,0 - %maxx,%maxy
'(CL) CopyLeft 2014-11 by P.Specht, Wien. Ohne jedwede Gewähr!
print "\n Bedienung (Bitte keine Hochstelltaste verwenden!):"
print "\n 1. Maus auf *linke obere* Ecke des Darstellundrechtecks, 'M'-Taste für 'MERKEN'"
print "\n 2. Maus auf rechte untere Ecke des Darstellundrechtecks, 'R'-Taste für 'RECHTECK'"
print "\n Es wird die Mitte des Tortenstücks abgezeigt, weil diese nun feststeht."
print "\n 3. Winkellinie Maus zu Mittelpunkt gibt Startwinkel: 'V'-Taste für 'VON'"
print "\n 4. Winkellinie Maus zu Mittelpunkt gibt Stop-winkel: 'B'-Taste für 'BIS'"
print "\n Tortenstück wird gezeichnet."
print "\n 5. 'C' für 'CLS' = Clear Screen"
print "\n Viel Spass beim üben!\n"
var xh&=width(%hwnd):var yh&=height(%hwnd)
declare LOX&,LOY&,LUX&,LUY&,SX&,SY&,EX&,EY&,StartAngle!,StopAngle!,Kippwinkel!
Repeat
waitinput
case %key=27:end
'print %key
if %key=109
print "M";
LOX&=%mousex:LOY&=%mousey
endif
if %key=114
print "R";
usepen 0,2,rgb(0,255,0)
LUX&=%mousex:LUY&=%mousey
rectangle LOX&,LOY& - LUX&,LUY&
usepen 0,5,rgb(255,0,0)
moveto (Lox&+lux&)\2,(Loy&+luy&)\2
lineto (Lox&+lux&)\2+1,(Loy&+luy&)\2
endif
if %key=118
print "V";
SX&=%mousex:SY&=%mousey
endif
if %key=98
print "B";
EX&=%mousex:EY&=%mousey
usebrush 0,rgb(0,0,255)
usepen 0,5,rgb(255,0,0)
Kippwinkel! = arctan4( LUy&-LOy&, LUx&-LOx& )
StartAngle! = arctan4( Sx&-(LUx&+LOx&)/2 , (LUy&+LOy&)/2-Sy& )
StopAngle! = arctan4( Ex&-(LUx&+LOx&)/2 , (LUy&+LOy&)/2-Ey& )
' Gilt für Pie, Arc und Chord:
PIE LOX&,LOY& - LUX&,LUY&;\
(LUx&+LOx&+(LUx&-LOx&)*Cos(-StartAngle!)*cos(Kippwinkel!) )/2,\
(LUy&+LOy&+(LUy&-LOy&)*Sin(-StartAngle!)*sin(Kippwinkel!))/2;\
(LUx&+LOx&+(LUx&-LOx&)*Cos(-StopAngle!)*cos(Kippwinkel!))/2,\
(LUy&+LOy&+(LUy&-LOy&)*Sin(-StopAngle!)*sin(Kippwinkel!))/2
endif
case %key=99:cls
until 0
proc ArcTan4 :parameters x!,y!
var pi!=3.1415926535897932:var w!=0'(CL)2014-01 P.Specht§gmx.at
if x!=0:if y!>0:w!=pi!*0.5:elseif y!<0:w!=pi!*1.5:else :w!=0:endif :return w!:elseif x!>0
if y!=0:w!=0:return w!:elseif y!>0:if x!>y!:w!=arctan(y!/x!):else :w!=pi!/2-arctan(x!/y!):endif
return w!:else :if x!<-y!:w!=pi!*1.5+arctan(x!/-y!):else :w!=2*pi!-arctan(-y!/x!):endif :return w!
endif :else :if y!>0:if x!>-y!:w!=pi!/2+arctan(-x!/y!):return w!:else :w!=pi!-arctan(y!/-x!)
return w!:endif :elseif y!<0:if x!<y!:w!=pi!+arctan(-y!/-x!):else :w!=pi!*1.5-arctan(-x!/-y!)
endif :return w!:else :w!=pi!:return w!:endif :endif :Print " ArcTan4 ERROR":waitinput:waitinput
endproc
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 16.05.2021 ▲ |
|
|
|