0

http://paulbourke.net/geometry/2circle/ ここにいる少数の人々の助けを借りてこれを解決しました。このコードは2つの円の交点を取得します

これが私のワークスペースコードです

    |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. 

これらすべてを実行し、交差するポイントに色付きのドットを描画する必要があります

4

1 に答える 1

0

クラスに新しいメソッドを追加したいだけのようです。ブラウザを開き、に移動しCircleAnimeMorph、メソッドカテゴリペイン(右から2番目のペイン)のどこかをクリックし、コードペイン(ブラウザの下半分)をクリックして、追加します。

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."
于 2012-09-24T17:19:51.460 に答える