[plt-scheme] Re: Draw and save coordinates on every mouse event on canvas?

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Wed Jun 10 23:31:58 EDT 2009


You can learn Scheme the way you learned Python. But it's like trying  
to practice for the swim team in a bathtub. -- Matthias, former  
swimcoach


On Jun 10, 2009, at 5:43 PM, Captain___nemo wrote:

> Thanks a lot Mr.Matthias. nop, I am not a student, have graduated
> several months (not year though) ago :).
>
> I am working on implementing Voronoi diagram. And may be I was
> thinking to learn this too fast (as I did for python). But I
> understand now that this language   is not like Java or python. So, I
> have to learn the structure of this language rather than jumping here
> and there :)
>
> Regards.
>
> On Jun 11, 1:55 am, Matthias Felleisen <matth... at ccs.neu.edu> wrote:
>> Here is a solution:
>>
>> #lang scheme
>>
>> (require 2htdp/universe)
>>
>> ;; World = [Listof (list Nat Nat)]
>> (define mt (empty-scene 200 200))
>> (define col "red")
>> (define DOT (circle 3 "solid" col))
>>
>> (define (click w x y ke)
>>    (cond
>>      [(mouse=? "button-down" ke)
>>       (cons (list x y) w)]
>>      [else w]))
>>
>> (define (render w0)
>>    (local ((define (cnt w a) (foldl (lambda (f a) (list f (apply ln+
>> f a))) a w))
>>            (define (dot s p) (place-image DOT (first p) (second p)  
>> s))
>>            (define (ln+ p q s)
>>              (add-line s (first p) (second p) (first q) (second q)  
>> col))
>>            (define dots (foldr (lambda (f r) (dot r f)) mt w0)))
>>      (cond
>>        [(empty? w0) mt]
>>        [else (second (cnt (rest w0) (list (first w0) (dot dots (first
>> w0)))))])))
>>
>> (big-bang '() (on-mouse click) (on-draw render))
>>
>> But this solution will give you away in case this is homework. To
>> prove that this isn't homework, you need to point us to the place
>> where our manuals recommend using world.ss.
>>
>> -- Matthias
>>
>> On Jun 10, 2009, at 6:53 AM, Captain___nemo wrote:
>>
>>
>>
>>
>>
>>> Hi,
>>> I am newbie in scheme, just started yesterday. So, please don't mind
>>> if I am overlooking anything simple.
>>
>>> I want to draw circular points on every click on the drawing window
>>> (or canvas). Also I want to save the coordinates in an array. After
>>> every click a connecting line should be drawn (from last point)  
>>> and so
>>> on.
>>
>>> Now, I don't understand how I should put a canvas. As I can see in
>>> Dr.Scheme manual , it is recommended to use world.ss.  But I don't
>>> understand how will I get the coordinates and save in an array? Also
>>> how that line can be drawn?
>>
>>> Any suggestion is appreciated.
>>
>>> Thanks in advance.
>>> _________________________________________________
>>>   For list-related administrative tasks:
>>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>
>> _________________________________________________
>>   For list-related administrative tasks:
>>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.