Deutsch
Quelltexte/ Codesnippets

Kreuzen Linien Mathe

 
Habe hier ein Code gefunden  [...] 
KompilierenMarkierenSeparieren
Function Lines_Intersect(ax#, ay#, bx#, by#, cx#, cy#, dx#, dy#)
rn# = (ay#-cy#)*(dx#-cx#) - (ax#-cx#)*(dy#-cy#)
rd# = (bx#-ax#)*(dy#-cy#) - (by#-ay#)*(dx#-cx#)

If rd# = 0

    Return False

Else

    sn# = (ay#-cy#)*(bx#-ax#) - (ax#-cx#)*(by#-ay#)
    intersection_ab# = rn# / rd#
    intersection_cd# = sn# / rd#
    intersection_x#  = ax# + intersection_ab#*(bx#-ax#)
    intersection_y#  = ay# + intersection_ab#*(by#-ay#)
    Return True

EndIf

End Function

If intersection=0 Or intersection_ab#<0 Or intersection_ab#>1 Or intersection_cd#<0 Or intersection_cd#>1 Then

    Text 0,40,"Linien kreuzen nicht"

Else

    Text 0,40,"Linien kreuzen"

EndIf


Werd den mal portieren und schauen ob das läuft...
 
05.12.2006  
 



Ok
KompilierenMarkierenSeparierenJetzt noch schauen obs funzt...
 
05.12.2006  
 



Hehe funktioniert super!

Testcode:
KompilierenMarkierenSeparieren
 {$cleq}
const myPI=3.1415926535897932384626433832795
float cos_outpx,cos_outpy,w
float intersection_ab,intersection_cd,intersection_x,intersection_y
bool intersection
cls

while 1

    cls
    w:=wnk(100,100,mousex,mousey,false)
    print int(w),"°  "
    getcircp 100,100,50,w+90
    drawtext cos_outpx,cos_outpy,"+"
    line 150,50 - 150,200
    intersection:=LineIntersec(100,100,mousex,mousey,150,50,150,200)

    If (intersection==false) Or (intersection_ab<0) Or (intersection_ab>1) Or (intersection_cd<0) Or (intersection_cd>1)

        print "Linien kreuzen nicht"

    Else

        print "Linien kreuzen"

    EndIf

    sleep 50

wend

waitkey

proc LineIntersec(float ax,ay,bx,by,cx,cy,dx,dy)

    float rn:=(ay-cy)*(dx-cx) - (ax-cx)*(dy-cy)
    float rd:=(bx-ax)*(dy-cy) - (by-ay)*(dx-cx)
    case (rd==0) : return false
    float sn = (ay-cy)*(bx-ax) - (ax-cx)*(by-ay)
    intersection_ab = rn / rd
    intersection_cd = sn / rd
    intersection_x  = ax + intersection_ab*(bx-ax)
    intersection_y  = ay + intersection_ab*(by-ay)
    return true

endproc

proc wnk(float x1,y1,x2,y2,int mode)

    float dx=x2!-x1!
    float dy=y2!-y1!
    line x1,y1 - x2,y2
    case (dx<0) and (dy<0) : return wnk(x2,y2,x1,y1,3)
    case dx<0 : return wnk(x2,y1,x1,y2,1)
    case dy<0 : return wnk(x1,y2,x2,y1,2)
    casenot dx : dx=0.0000001
    casenot dy : dy=0.0000001
    float w=arctan(dy/dx)*57.295779513082320876798154814105

    if (mode==1)

        w:=90+(90-w)

    elseif (mode==2)

        w:=360-w

    elseif (mode==3)

        w:=180+w

    endif

    return w

endproc

proc getcircp(float xp,yp,r,w)

    cos_outpx:=((((r*sin(((-1*(((-1+w)*myPI)+myPI))/180))))*-1)+xp)
    cos_outpy:=((((r*cos(((-1*(((-1+w)*myPI)+myPI))/180))))*-1)+yp)

endproc

 
05.12.2006  
 



So die Zusammenfassung:
KompilierenMarkierenSeparieren
 
05.12.2006  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.555 Betrachtungen

Unbenanntvor 0 min.
Michael W.23.12.2016
Ernst26.05.2014
Julian Schmidt30.08.2011

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

iF (4x)


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