|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Kjirbis
Joined: 22 May 2005 Posts: 20 Location: Liepaja
|
Posted: Wed Nov 22, 2006 6:50 pm Post subject: |
|
neprecīzi uzrakstīju. garums tiem ir = 1. varbūt vajadzēja apzīmēt par līnijām. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Nov 22, 2006 9:58 pm Post subject: |
|
Nesapratu... kam garums ir 1? Kas par līnijām?
Vektors plaknē - tas ir divdimensionāls lielums. To apraksta vai nu ar leņķi UN garumu, vai arī ar (x,y) pārīti. Nevis ar vienu lielumu.
Kas īsti tev par to trijstūri zināms? Tā arī man nav skaidrāk palicis... |
|
Back to top |
|
|
Kjirbis
Joined: 22 May 2005 Posts: 20 Location: Liepaja
|
Posted: Sat Nov 25, 2006 3:13 pm Post subject: |
|
mnu varbūt ar ActionScript kodu viss kļūs skaidrs:
Code: |
function line(x1, y1, x2, y2)
{
l = new Object();
l.x1 = x1; l.y1 = y1;
l.x2 = x2; l.y2 = y2;
return l;
}
function point(x, y)
{
var p = new Object();
p.x = x;
p.y = y;
return p;
}
function vector_length(p)
{
return p.x*p.x + p.y*p.y;
}
function normalize_vector(p)
{
var len = Math.sqrt(vector_length(p));
p.x /= len;
p.y /= len;
}
function calc_line(l)
{
l.x = l.x2 - l.x1; // shiten (l.x, ly) ir nenormalizets linijas vektors
l.y = l.y2 - l.y1;
l.len = Math.sqrt(vector_length(l));
if (l.x != 0) { // precalculacijas prieksh liniju krustpunkta atrashanas
l.dy = l.y / l.x;
l.y0 = l.y1 - l.dy * l.x1;
}
else {
l.dy = 0;
l.y0 = 0;
}
}
function intersect(l1, l2)
{
var dy = (l1.dy - l2.dy);
if (dy == 0) return null;
var xi = (l2.y0 - l1.y0) / dy;
var yi = l1.y0 + xi * l1.dy;
if (((l1.x1-xi)*(xi-l1.x2)>=0) &&
((l2.x1-xi)*(xi-l2.x2)>=0) &&
((l1.y1-yi)*(yi-l1.y2)>=0) &&
((l2.y1-yi)*(yi-l2.y2)>=0)) {
return point(xi, yi);
}
return null;
}
this.onEnterFrame = function() // frame loops
{
....
var p = intersect(l1, l2);
if (p) {
mycr = draw_circle(p.x, p.y, 6); // rinkis ap krustpunktu, radiuss = 6
var a = point(l1.x, l1.y); // njemam abas linijas
var b = point(l2.x, l2.y);
normalize_vector(a);
normalize_vector(b);
// atrodam bisektrisi c saskaitot a un b vektorus
var c = point(a.x+b.x, a.y+b.y);
var rsum = l1.r + l2.r; // nenjemam veraa sho vertibu,garums var but jebkaads
var l3 = line(p.x, p.y, p.x-c.x*rsum, p.y-c.y*rsum);
myln2 = draw_ln(l3, 0x008000);
// atrodam bisektrises perpendikularo vektoru
var xx = p.x-c.x*rsum;
var yy = p.y-c.y*rsum;
// var d = point(xx, yy);
var l4 = line(xx, yy, xx+c.y*l2.r, yy-c.x*l2.r);
myln3 = draw_ln(l4, 0x800000);
/*
tagad veelos veidot taisnlenka triistuuri, kur zinaams;
hipotenuuza: a vai b, vajadzigo garumu nezinu ( =1, ja normalizee)
shii hipotenuza sakas no krustpunkta uz linijas sakumpunkta virzienu.
katete: bisektrise c, vajadzigo garumu nezinu
katete: bisektrises perpendikuls d, garums ir zinaams, tas ir rinka radiuss kura
kustibas linija(vektors) ir a vai b.
paskatoties vizualizaciju, vajadzetu visam tapt skaidram.
*/
}
...
}
|
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|