On Nov 14, 2009, at 11:46 AM, Robby Findler wrote: > middle and center are synonymous (and can be used in both horizontal > and vertical directions).
Then consider this a bug report/feature request. Like in HTML, I suggest that middle and center work for vertical and horizontal alignment, respectively. -- Matthias > > Robby > > On Sat, Nov 14, 2009 at 10:42 AM, Matthias Felleisen > <matth...@ccs.neu.edu> wrote: >> >> This should be >> >> (overlay/places "center" "middle" >> (rotate 0 a) >> (rotate 20 a) >> (rotate 40 a) >> (rotate 60 a)) >> >> not >> >> .. "middle" "middle" ... >> >> correct? >> >> >> On Nov 14, 2009, at 1:18 AM, John Clements wrote: >> >>> >>> On Sep 26, 2009, at 6:29 AM, Matthias Felleisen wrote: >>> >>>> >>>> >>>> 1. htdp/world is deprecated, use 2htdp/universe instead. >>>> >>>> 2. we consider the pinhole approach to our image library as a mistake. To >>>> solve the problem Robby is working on 2htdp/image, a replacement for the >>>> image library. When it comes out (end of semester probably) it will >>>> support rotate and other such operations, plus comparisons will be much >>>> faster. >>> >>> I'm surprised to say it, but right now I'm *really missing the pinhole*. >>> >>> I'm trying to write a function in 2htdp/image that draws, say, 36 copies of >>> a shape arranged in a big "circle" around a center. With pinholes, this >>> was easy. Move the pinhole way off to the left, then rotate the thing >>> around the pinhole by 10 degrees, 20 degrees, etc. Overlay them all, and >>> you're done. [*] >>> >>> With the new approach, I'm finding this nearly impossible. The natural >>> approach involves, for instance, putting the thing "beside" a long >>> horizontal space, and then rotating it. The problem is that it doesn't >>> rotate about a fixed point. To see the problem, consider this program: >>> >>> (require 2htdp/image) >>> >>> (define a (beside (rectangle 150 2 "solid" "black") (ellipse 10 50 "solid" >>> "purple"))) >>> >>> (overlay/places "middle" "middle" >>> (rotate 0 a) >>> (rotate 20 a) >>> (rotate 40 a) >>> (rotate 60 a)) >>> >>> The problem is that mapping a point in the pre-rotation shape to a point in >>> the post-rotation shape is hard. >>> >>> ... >>> >>> After wrestling with this for quite a while, I have a solution of sorts; >>> you have to overlay the shape you want to rotate on a large outline circle >>> in such a way that the shape is entirely inside the circle. Rotating this >>> shape does not change the bounding box at all, meaning that you can overlay >>> them correctly. Needless to say, computing the size of the circle required >>> is a big pain. >>> >>> E.G.: >>> >>> (define b (overlay/xy (circle 200 "outline" "blue") 200 200 a)) >>> >>> (overlay >>> (rotate 0 b) >>> (rotate 20 b) >>> (rotate 40 b) >>> (rotate 60 b)) >>> >>> Am I missing something obvious? >>> >>> John >>> >>> [*] with the obvious caveat that the old version didn't rotate shapes at >>> all. >>> >>> >>> _________________________________________________ >>> For list-related administrative tasks: >>> http://list.cs.brown.edu/mailman/listinfo/plt-dev >> >> _________________________________________________ For list-related administrative tasks: http://list.cs.brown.edu/mailman/listinfo/plt-dev