home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1999 November
/
Chip_1999-11_cd.bin
/
ctenari
/
Plavja
/
Exe
/
Klir
/
802.dg
< prev
next >
Wrap
Text File
|
1999-06-28
|
6KB
|
223 lines
// PR┘NIK DVOU V┴LC┘
// p°φklad bodovΘ konstrukce
#vloz "zakladni.dk"
// viditelnost v p∙doryse
jevidetp (R, v) {
ro = kolma(v:_osa, R);
X = p(ro, v:_osa);
vrat X."z" <= R."z";
}
// viditelnost v nßryse
jevidetn (R, v) {
ro = rovnobezna(Pi, R);
O = p(ro, v:_osa);
vrat R."y" >= O."y" - 0.1;
}
// jednotlivß bodovß konstrukce
prunik (p, k1, k2, o1, o2) {
A1 = p(k1,p);
A2 = p(k2,p);
kdyz ((typ(A1:0)=="bod")&(typ(A2:0)=="bod")) {
m1 = rovnobezka(o1, A1);
m2 = rovnobezka(o2, A2);
R = bod(m1:0, p((m1:0).1, m2.1)."x", ?, ?);
R = bod(m1:1, p((m1:1).1, m2.1)."x", ?, ?);
vrat R;
}
jinak vrat nic();
}
// nar²suje vßlec
mujvalec (S, T, r1, v1, v2) {
pd = kruz(Pi, S, r1);
ph = kruz(rovnobezna(Pi, T), T, r1);
o = primka(S, T);
styl(o, osa);
k = kolmice(Pi, o.1, [S, T].1);
X = p(pd.1, k:0);
Y = p(ph.1, k:1);
bok = usecka(X:0, Y:0);
bok = usecka(X:1, Y:1);
videt(bok, 2, 0);
styl(ph, silny);
rozdel(pd, 1, 2,0, 1,3, X:0, v1, X:1, v2, X:0);
r = rovnobezka(x, [S, T]);
XN = p(pd, r:0);
YN = p(ph, r:1);
bokn = usecka(XN:0, YN:0);
bokn = usecka(XN:1, YN:1);
bokn = usecka(YN:0, YN:1);
videt(bokn, 1, 0);
vrat [pd, ph, o, bok, bokn];
}
hlavni () {
zobrazeni("mongeovo");
papir(29.7, 21, 1, 1); //A4
okraj(0.75,0.75,0.75,0.75,0.25,1,0);
posunutipss(0,-2);
nadpis("802.", "", datum(), "PETR PLAVJAN═K",
"PR┘NIK DVOU V┴LC┘");
// p°eddefinovanΘ styly
normal = styl();
sklopeny = styl();
videt(sklopeny, vse, 2, ?, ?, 1, 3);
barva(sklopeny, "seda");
silny = styl();
videt(silny, vse, 1, 0, 3, 2, 0);
osa = styl();
videt(osa, vse, 1, 0, 3, 1, 2);
schovany = styl();
videt(schovany, vse, 1, -1, 2, 1, 3);
nevidet = styl();
videt(nevidet, vse, 0);
// funkce mujvalec() vracφ skupinu o vφce objektech:
_pd = 0; // valec:0 - dolnφ podstava
_ph = 1; // valec:1 - hornφ podstava
_osa = 2; // valec:2 - osa vßlce
_bokp1 = 3; // valec:3 - 1. bok v p∙dorysu
_bokp2 = 4; // valec:4 - 2. bok v p∙dorysu
_bokn1 = 5; // valec:5 - 1. bok v nßrysu
_bokn2 = 6; // valec:6 - 2. bok v nßrysu
_vrch = 7; // valec:7 - vrÜek v nßrysu
//postup:
S = bod(3.5,11,0);
T = bod(-5,3.5,5);
r1 = 3.2;
v1 = mujvalec(S, T, r1, 0,1);
U = bod(-3.5,11.5,0);
V = bod(3.5,4,6);
r2 = 2.5;
v2 = mujvalec(U, V, r2, 1,0);
K = p((v1:_osa).2, (v2:_osa).2);
prepis(K, bod(v1:_osa, K."x", ?, ?));
m = rovnobezka(v2:_osa, K);
zrus(K);
P = p(Pi, m);
p = primka(P, S);
// v²znamnΘ body
K = p(v1:_pd, kolmice(x,S));
K = p(v1:_pd, rovnobezka(x,S));
K = p(v1:_pd, kolmice(Pi,p.1,S));
K = p(v2:_pd, kolmice(x,U));
K = p(v2:_pd, rovnobezka(x,U));
K = p(v2:_pd, kolmice(Pi,p.1,U));
// bodovß konstrukce
X = K:1;
i = 0;
krok = 0.1;
dokud (X."y" <= (K:0)."y") {
h = rovnobezka(p, X);
prepis(X, bod(X."x", X."y"+krok));
H = prunik(h:i, v1:_pd, v2:_pd, v1:_osa, v2:_osa);
zvetsi(i);
}
zrus(i);
zrus(X);
zrus(h);
// spojenφ bod∙ do k°ivky
H2 = usp(4, 1,-3,4,-2, beznic(H));
videt([H, H2, K], vse, 0);
h = nuhelnik(H2);
styl(h, silny);
// viditelnost pr∙niku
i = 0;
pocet = pocet(H2);
dokud (i < pocet) {
kdyz (!(jevidetp(H2:i, v1)&jevidetp(H2:i, v2)))
styl(h:i, 1, schovany);
kdyz (!(jevidetn(H2:i, v1)&jevidetn(H2:i, v2)))
styl(h:i, 2, schovany);
zvetsi(i);
}
zrus(i);
// viditelnost hran a vybarveni
R11 = pruniky_k_p(H2, v1:_bokp1, 0.01, 0.1);
rozdel(v1:_bokp1, 1, 2,0, 1,3, R11:0, R11:(pocet(R11)-1));
videt(R11, vse, 0);
R12 = p(v1:_bokp2, v2:_bokp1);
R12 = p(v1:_bokp2, v2:_bokp2);
rozdel(v1:_bokp2, 1, 2,0, 1,3, R12:0, R12:(pocet(R12)-1));
videt(R12, vse, 0);
R21 = pruniky_k_p(H2, v2:_bokp1, 0.01, 0.1);
rozdel(v2:_bokp1, 1, 2,0, 1,3,
seradbnp(v2:_bokp1, R21:0, R21:(pocet(R21)-1)));
videt(R21, vse, 0);
R22 = p(v2:_bokp2, v1:_bokp1);
R22 = p(v2:_bokp2, v1:_bokp2);
R22 = pruniky_k_p(H2, v2:_bokp2, 0.01, 0.1);
rozdel(v2:_bokp2, 1, 2,0, 1,3,
seradbnp(v2:_bokp2, R22:0, R22:(pocet(R22)-1)));
videt(R22, vse, 0);
barva1s = RGB(250,0,0);
barva1t = RGB(220,0,0);
vypln = vypln(T, 1, barva1s, 0, v1:_ph);
vypln = vypln2(S, 1, barva1t, 0, [v1:[_pd, _bokp1, _bokp2], v2:[_bokp1], h]);
X = p(v2:_bokp2, (v1:_osa).1) + bod(0.1, 0.1);
vypln = vypln2(X, 1, barva1t, 0, [v1:[_ph, _bokp1, _bokp2], v2:[_bokp2], h]);
barva2s = RGB(0,250,0);
barva2t = RGB(0,220,0);
vypln = vypln2(U, 1, barva2t, 0, [v2:[_ph, _pd, _bokp1, _bokp2], v1:[_bokp2, _bokp1], h]);
vypln = vypln(V, 1, barva2s, 0, v2:_ph);
videt(X, vse, 0);
styl(v1:_vrch, 2, silny);
styl(v2:_vrch, 2, silny);
N21 = pruniky_k_p2(H2, v2:_bokn1, 0.01, 0.1);
rozdel(v2:_bokn1, 2, 2,0, 1,3, seradbnp(v2:_bokn1, N21:0, N21:(pocet(N21)-1)));
videt(N21, vse, 0);
N22 = pruniky_k_p2(H2, v2:_bokn2, 0.01, 0.1);
rozdel(v2:_bokn2, 2, 2,0, 1,3, seradbnp(v2:_bokn2, N22:0, N22:(pocet(N22)-1)));
videt(N22, vse, 0);
N11 = p(v1:_bokn1.2, v2:_bokn1.2);
N11 = p(v1:_bokn1.2, v2:_bokn2.2);
rozdel(v1:_bokn1, 2, 2,0, 1,3, seradbnp(v1:_bokn1, N11:0, N11:(pocet(N11)-1)));
videt(N11, vse, 0);
N12 = p(v1:_bokn2.2, v2:_bokn1.2);
N12 = p(v1:_bokn2.2, v2:_bokn2.2);
rozdel(v1:_bokn2, 2, 2,0, 1,3, seradbnp(v1:_bokn2, N12:0, N12:(pocet(N12)-1)));
videt(N12, vse, 0);
Y = p(v1:_osa.2, v2:_osa.2) + bod(0.1,0,0.1);
vypln2 = vypln2(Y, 2, barva2t, 0, [x, v2:[_bokn1, _bokn2, _vrch], h]);
Y2 = p(v1:_osa.2, v2:[_bokn1, _bokn2].2) + bod(0.1,0,0.1);
vypln2 = vypln2(Y2, 2, barva1t, 0, [x, v1:[_bokn1, _bokn2, _vrch], v2:[_bokn1, _bokn2], h]);
videt([Y, Y2], vse, 0);
}