Deutsch
Quelltexte/ Codesnippets

XProfans PIE-, ARC- und CHORD-Befehle in den Griff bekommen

 

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  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.443 Betrachtungen

Unbenanntvor 0 min.
H.Brill23.09.2024
Rschnett06.08.2022
p.specht21.11.2021
R.Schneider20.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie