13 ŞUBAT 2010, CUMARTESİ
Başka bir nokta bir nokta (2D)dönen
Kartları fan dışarı nerede bir kart oyunu yapmaya çalışıyorum. Doğru görüntülemek için şimdi bir işleve sahip: Allegro API kullanarak Im
al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X
,Y,DEGREES_TO_ROTATE_IN_RADIANS);
bu benim fan kolayca etki yapabilir. O zaman sorun fare altında olduğunu bilmek. Bunu yapmak için çokgen çarpışma testi yapmayı düşündüm. Sadece kart üzerinde 4 puan çokgen telafi etmek için döndürmek için nasıl emin değilim. Ben temelde Allegro ile aynı işlemi yapmak gerekiyor.
örneğin, kartın 4 puan
card.x
card.y
card.x card.width
card.y card.height
Gibi bir işlev gerekir:
POINT rotate_point(float cx,float cy,float angle,POINT p)
{
}
Teşekkürler
CEVAP
13 ŞUBAT 2010, CUMARTESİ
Çok basit, ilk pivot noktası (cy C) çıkarın,sonra döndürün ve tekrar ekleyin.
test edilmemiş:
POINT rotate_point(float cx,float cy,float angle,POINT p)
{
float s = sin(angle);
float c = cos(angle);
// translate point back to origin:
p.x -= cx;
p.y -= cy;
// rotate point
float xnew = p.x * c - p.y * s;
float ynew = p.x * s p.y * c;
// translate point back:
p.x = xnew cx;
p.y = ynew cy;
return p;
}
Rotasyon tam olarak rotasyonu berbat ettim ters tarafı ise. Bu durumda:
float xnew = p.x * c p.y * s;
float ynew = -p.x * s p.y * c;
(Hangi şekilde hatırlayacağım bir gün doğru olduğunu umalım).
Bunu Paylaş:
Bir nokta döndürme 2D başka bir nokta...
Beraberlik Google haritada bir nokta e...
Nasıl nokta gösterebilir miyim (&;...&...
JVM ve sıcak nokta arasındaki fark?...
Çift nokta arasındaki farklılıklar&;.....