Создать метод для точек пересечения

http://paulbourke.net/geometry/2circle/ Решил это с помощью нескольких человек здесь, Этот код получит точку пересечения для двух кругов

Вот мой код рабочей области

    |b b1 r r1 r2 d |
    b1:= CircleAnimeMorph  new.   " CircleAnimeMorph is my new   class"
    b1 center: 100@100.
    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. ].

Может ли кто-нибудь помочь мне сделать это методы, я хочу сделать это метод пересечения, который будет делать все это, когда я говорю

    b1 intersection:b. 

следует сделать все это и нарисовать цветные точки в пересекающихся точках

1 ответ

Решение

Похоже, вы просто хотите добавить новый метод в ваш класс. Откройте браузер, перейдите к CircleAnimeMorph, щелкните где-нибудь на панели категорий методов (это вторая панель справа), щелкните на панели кода (нижняя половина браузера) и добавьте

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."
Другие вопросы по тегам