2010-12-16 22 views
5

Dikdörtgen oluşturmak için işaretçi etrafında belirli derecelerde 4 puanlık bir noktaya nasıl dönebilirim? Bir noktanın etrafındaki bir noktayı döndürebilirim, ancak bozuk olmayan bir dikdörtgen yapmak için bunu telafi edemiyorum.Dikdörtgeni bir nokta çevresinde döndürme

+2

Şu ana kadar bunu yapmaya çalıştık ... http://jsfiddle.net/dahousecat/4TtvU/

değiştirme açısı ve sonucunu görmek için vurmak çalışma: Burada örneğidir? bazı kod? teşekkürler – Trufa

+3

Dört noktanızı işaretleyin, böylece işaretçiyi merkez olarak işleyin, döndürmeyi standart döndürme matrisi yöntemi ile yapın ve sonra noktaları geri çevirin. [Buradaki Açıklamalar] (http://www.euclideanspace.com/maths/geometry/affine/aroundPoint/index.htm) – Michal

+0

Bunu kullanabileceğimi anladım, ancak düz İngilizce veya tercihen JavaScript'te bir çözüme ihtiyacım var. – Anonymous

cevap

23

Bir nokta etrafındaki bir noktayı döndürürseniz, bir dikdörtgeni döndürmek kolay olmalıdır - sadece 4 puan döndürürsünüz. İşte

bir kökeni etrafında bir noktayı döndürmek için bir js fonksiyonudur:

function rotate_point(pointX, pointY, originX, originY, angle) { 
    angle = angle * Math.PI/180.0; 
    return { 
     x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX, 
     y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY 
    }; 
} 

Ve sonra her noktaya yapabilirsiniz.

+0

Bunu açıklayabilir misiniz? jsfiddle.net/bjhc34xk/7 Bu, PI'nın yaklaşımı veya belki de kayan noktalı matematik hataları ile ilgili bir şey var mı? –

+1

Forked Felix'in kemanı, deneyi kolaylaştırmak için dinamik giriş için bir sürgü içermesi - https://jsfiddle.net/brichins/0ccdd362/ – brichins

+2

@MaxMastalerz Bundan şimdiye kadar devam ettiğine eminim, fakat Fiddle'ınız muhtemelen düşündüğün şeyi yapmamak. Son noktanızın X koordinatını, hesaplamanın ortasında değiştiriyorsunuz ve ardından Y koordinatını merkez yerine o ofset noktasından çeviriyorsunuz. Harika bir altın sarmalda sonuçlar, ama bunu yapmak istediğini düşünüyorum: https://jsfiddle.net/brichins/w2rxsbt4/ – brichins

İlgili konular