Français
Source/ Codesnippets

Kreuzen Linien Mathe

 
Habe ici un Code trouvé  [...] 
KompilierenMarqueSéparation
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 la fois portieren et regarder si cela fonctionne...
 
05.12.2006  
 



Ok
KompilierenMarqueSéparation
05.12.2006  
 



Hehe funktioniert super!

Testcode:
KompilierenMarqueSéparation
 {$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 qui Zusammenfassung:
KompilierenMarqueSéparation
05.12.2006  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.602 Views

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

Themeninformationen

cet Thema hat 1 participant:

iF (4x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie