~ubuntu-branches/ubuntu/utopic/tcm/utopic

« back to all changes in this revision

Viewing changes to doc/specifications/line-distribution.txt

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2003-07-03 20:08:21 UTC
  • Revision ID: james.westby@ubuntu.com-20030703200821-se4xtqx25e5miczi
Tags: upstream-2.20
Import upstream version 2.20

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
From henkz@cs.utwente.nl Thu Mar  9 09:24:21 2000
 
2
Date: Wed, 23 Feb 2000 09:51:10 +0100 (MET)
 
3
From: Henk van de Zandschulp <henkz@cs.utwente.nl>
 
4
To: frank@cs.vu.nl
 
5
Subject: Fwd: goochelen met TCM
 
6
 
 
7
Frank, 
 
8
 
 
9
TCM kan zelfs gebruikt worden om kunst te maken :)
 
10
Bijgaande het probleem, en gelijk maar een mogelijke oplossing erbij?
 
11
 
 
12
--- 8< --- 8< ----
 
13
 
14
> Als er tussen twee verschillend grote elementen meerdere lijnen getekend
 
15
> worden kunnen deze nog wel eens op de foute plaats terechtkomen. Zie
 
16
> bijgaand voorbeeld.
 
17
 
18
> Hieronder zet ik ook maar een alogritme neer dat dit probleem kan
 
19
> corrigeren, maar dat ook voor een mooie verdeling van meerdere edges
 
20
> tussen nodes zorgt die niet precies naast of boven elkaar getekend zijn.
 
21
 
22
> David.
 
23
 
24
> ----------
 
25
 
26
> Een algoritme om edges tussen twee nodes te verdelen (ik weet niet of
 
27
> ik het al eens heb verteld):
 
28
 
29
> Vooronderstellingen:
 
30
> a) Elke node type heeft een beschrijving van de omtrek, samengesteld uit
 
31
>    polygonale stukken en 1/4-cirkels. Deze beschrijving wordt gebruikt
 
32
>    om te berekenen waar een edge de rand van een node treft; zij kan
 
33
>    ook gebruikt worden om de node te tekenen. (Let op bij nodes met
 
34
>    lijnen die niet aan de buitenkant liggen, zoals notes).
 
35
> b) Elke node type heeft een ,,zwaartepunt''. Dit kan eventueel uit de
 
36
>    gegevens a) berekend worden. (behalve bij notes). Bij driehoeken is
 
37
>    te overwegen of je het grafische middenpunt wilt gebruiken of het
 
38
>    echte zwaartepunt (dat er iets onder ligt); als je namelijk met het
 
39
>    onderstaande algoritme ��n horizontale lijn tussen twee driehoeken
 
40
>    berekent verbindt deze de grafische middenpunten, niet de zwaarte-
 
41
>    punten.
 
42
 
43
> Gegeven twee nodes, a en b; te tekenen n edges tussen de nodes.
 
44
 
45
> 1. Bereken de zwaartepunten Z(a) en Z(b). Bepaal de richting van het
 
46
>    lijnstuk Z(a)--Z(b).
 
47
 
48
> 2. Bepaal de tangenten in richting Z(a)--Z(b) aan a en b. Dit levert
 
49
>    de raakpunten R1(a), R2(a), R1(b) en R2(b) op. (Dus een lijn door
 
50
>    R1(a) in de richting van Z(a)--Z(b) is een tangent aan a, en R1(a)
 
51
>    ligt op de rand van a.) Als een randpunt, b. v. R1(a), niet
 
52
>    eenduidig vastligt, kies R1(a) zo dicht mogelijk bij Z(b).
 
53
 
54
> 3. Verdeel het lijnstuk R1(a)--R2(a) in n+1 gelijke delen. Dit levert
 
55
>    de punten O(a,0)=R1(a), O(a,1), O(a,2), ..., O(a,n), O(a,n+1)=R2(a)
 
56
>    op; deze punten liggen alle op ��n lijn en twee opeenvolgende punten
 
57
>    hebben steeds dezelfde afstand.
 
58
 
59
> 4. Doe hetzelfde met het lijnstuk R1(b)--R2(b). Dit levert de punten
 
60
>    O(b,0)=R1(b), O(b,1), ..., O(b,n+1)=R2(b) op.
 
61
 
62
> 5. De edges komen te liggen op de lijnen O(a,1)--O(b,1), O(a,2)--O(b,2),
 
63
>    ..., O(a,n)--O(b,n).
 
64
 
65
> 6. Om het exacte begin- en eindpunt van de edges te bepalen gebruik de
 
66
>    gegevens van vooronderstelling a) om het snijpunt van elk
 
67
>    polygoonstuk of 1/4-cirkel met de lijn te berekenen.
 
68
 
69
> Als je meer uitleg wilt kan ik tekeningen maken, maar liever niet per
 
70
> e-mail.
 
71
 
 
72
 
 
73
Ik zal je de betreffend file zo separaat sturen.
 
74
Is wel een leuke testcase :)
 
75
 
 
76
Henk