2012-09-24 2 views
0

http://paulbourke.net/geometry/2circle/ résolu ce problème avec l'aide de quelques personnes ici, ce code obtenir le point d'intersection pour deux cerclesCréer une méthode pour les points d'intersection

Voici mon code d'espace de travail

|b b1 r r1 r2 d | 
    b1:= CircleAnimeMorph new. " CircleAnimeMorph is my new class" 
    b1 center: [email protected] 
    b1 openInWorld. 
    b:= CircleAnimeMorph new. 
    b openInWorld. 
    d:= b1 center dist: b center. "distance between 2 circles" 
    r:=b1 bounds width /2. "radius of first circle" 
    r1:=b bounds width/2. "radius of second Circle" 
    r2:=r + r1 . 

    (d)< (r2) 

    ifTrue: [| a h mid c c1 myPen h1 h2 mx my mc mc1| 

    a := (r squared - r1 squared + d squared)/(2 * d). 
    h := (r squared - a squared) sqrt. 
    h1:= b center y - b1 center y. 
    h2:= b center x - b1 center x. 
    mx:=a * (b center x - b1 center x)/d. 
    my:=a* (b center y - b1 center y)/d. 

    mid := ((mx)+(b1 center x) @ (b1 center y)+(my)) " calculates mid point between 2 intersecting circles (p2)" 
    { 
        mc:=(h * h1)/d. 
        mc1:=(h * h2)/d. 
        c:=(mid x + mc)@ (mid y - mc1)."Actual Intersecting points" 
        c1:=(mid x -mc) @ (mid y + mc1)."Actual Intersecting points" 
        Transcript show: (c); show: (c1); cr 
    }. 
        myPen := Pen new. 
        myPen color: Color red. 
        myPen putDotOfDiameter: 5 at: mid. 
        myPen putDotOfDiameter: 5 at: c1. 
        myPen putDotOfDiameter: 5 at: c. ]. 

Peut- une Aidez-moi à ces méthodes d'un, je veux en faire une méthode d'intersection qui fera tout ce quand je dis

b1 intersection:b. 

devrait faire tout cela et dessiner des points de couleur aux points d'intersection

Répondre

0

Il semble que vous vouliez simplement ajouter une nouvelle méthode à votre classe. Ouvrez un navigateur, accédez à CircleAnimeMorph, cliquez quelque part dans le volet de la catégorie de la méthode (qui est le deuxième volet de droite), cliquez dans le volet de code (la moitié inférieure du navigateur) et ajouter

intersection: aCircleAnimeMorph 
    "And here, put your workspace code, but remove the initialisation stuff, 
    change 'b' to 'self' and 'b1' to 'aCircleAnimeMorph', 
    and make sure you actually return the values. Don't forget to remove 
    the Transcript and drawing logic." 
+0

Il ressemble vous manquez quelques bases. Jetez un oeil à cette vidéo pour voir comment se développer dans pharo. http://vimeo.com/18520870 –

+0

@Igor, bien sûr que vous vouliez mettre ce commentaire sur la question, pas sur ce post :) –

+0

oui. mon commentaire a été adressé au sujet starter, bien sûr, pas vous :) –

Questions connexes