Smalltalk 创建交点的方法

Smalltalk 创建交点的方法,smalltalk,pharo,morphic,Smalltalk,Pharo,Morphic,在这里很少有人的帮助下解决了这个问题,这个代码将得到两个圆的交点 这是我的工作区代码 |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

在这里很少有人的帮助下解决了这个问题,这个代码将得到两个圆的交点

这是我的工作区代码

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

应该完成所有这些,并在相交点绘制彩色点

听起来您只是想向类中添加一个新方法。打开浏览器,导航到
CircleAnimeMorph
,单击“方法类别”窗格中的某个位置(即右侧的第二个窗格),单击“代码”窗格(浏览器的下半部分)并添加


看起来你错过了一些基本的东西。请看这段视频,了解如何在pharo中开发@伊戈尔,你当然是想在这个问题上发表评论,而不是在这个帖子上:)是的。当然,我的评论是针对主题启动者的,不是针对你:)
    b1 intersection:b. 
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."