<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV>I had also wondered about building Complex out of Point. The taste issues here are for Smalltalk</DIV><DIV>experts, so what I'll do is try to contribute with a quick look at the math.</DIV><DIV><BR class="khtml-block-placeholder"></DIV>Here's a table that describes some similarities and differences between Complex and<DIV>Number &amp; Point, respectively.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV> Function(s)                           Number                                Point</DIV><DIV>+, -                                           must extend                         is correct</DIV><DIV>*,/                                             must extend                         wrong, must override</DIV><DIV>real,imaginary                       must extend                         aliases for x,y</DIV><DIV>reciprocal                               must extend                        wrong, must override</DIV><DIV>a+ib                                         write a + b i                          a@b concise but nonstandard</DIV><DIV>printOn:                                   extend                                  a@b concise but nonstandard</DIV><DIV>abs                                           must extend                        r, not abs</DIV><DIV>arg                                            must extend                        theta almost right: arbitrary for 0@0; sloppy accuracy for 0@1, different root convention</DIV><DIV>sin, cos                                    must extend                        must extend</DIV><DIV>degreeCos, degreeSin        copy from Float                           </DIV><DIV>interpolation                           leave to user                      interpolateTo:at:</DIV><DIV>isZero                                      must extend                        is correct</DIV><DIV>|a -b|                                        leave to user                       a dist: b</DIV><DIV>rendering on plane               use Point                            is correct</DIV><DIV>=                                               must extend                        is correct</DIV><DIV>&gt;, &lt; etc.                                    return error?                       override, return error</DIV><DIV>adaptToNumber                    must extend                        is wrong, should be ^ rcvr@0 perform: selector with: self</DIV><DIV>asFloatPoint                            must extend                       correct?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>In the absence of guidance, I'm steaming ahead building on what's already there. In the event that the stuff</DIV><DIV>needs to be moved around, I hope someone out there knows an easy way of doing it.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>    regards</DIV><DIV>        ws</DIV><DIV><BR><DIV><DIV>On Sep 30, 2005, at 09.13, <A href="mailto:squeak-dev-request@lists.squeakfoundation.org">squeak-dev-request@lists.squeakfoundation.org</A> wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Monaco" size="2" style="font: 10.0px Monaco">I may be missing something, but is there a specific reason why we do not<SPAN class="Apple-converted-space"> </SPAN></FONT></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Monaco" size="2" style="font: 10.0px Monaco">implement complex numbers simply by extending Point ? it would make it<SPAN class="Apple-converted-space"> </SPAN></FONT></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Monaco" size="2" style="font: 10.0px Monaco">easier to work with transformations on the complex plane where<SPAN class="Apple-converted-space"> </SPAN></FONT></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Monaco" size="2" style="font: 10.0px Monaco">conversion between Point and Complex would happen all the time.</FONT></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><BR></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><BR></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Monaco" size="2" style="font: 10.0px Monaco">Stef</FONT></P> <P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><BR></P> <BR class="Apple-interchange-newline"></BLOCKQUOTE></DIV><BR></DIV></BODY></HTML>