2009-05-29 22 views
7

円の中心のピクセル座標を知っていれば、円の円周上のある程度のピクセル値をどのように見つけるか、円の半径、および垂直角。 基本的には、さまざまな時刻(時計1 o、時計oなど)で時計の手を描こうとしています円周上のピクセル座標を見つけるアルゴリズム

答えて

18

hのように時間とします0〜12の浮動小数点数(h=2.25は02:15など)。(cX,cY)は中心の座標です。 hLengthmLengthは、時針と分針の長さです。これは、標準的な「数学」を想定していること

// Hour hand 
hAngle = 2.0*Pi*h/12.0; // 0..12 mapped to 0..2*Pi 
hX = cX + hLength * sin(hAngle); 
hY = cY - hLength * cos(hAngle); 

// Min hand 
mAngle = 2.0*Pi*h; // 0..1 mapped to 0..2*Pi, etc. 
mX = cX + mLength * sin(mAngle); 
mY = cY - mLength * cos(mAngle); 
3

(x1、y1)が円周上の点で(x、y)が中心は、中心が左下隅にX0、Y0、及び0,0 IZである場合、x1 = x + r * cos(angle)y1 = y + r * sin(angle)

+0

注座標系であり、ここでYが増加上向き。典型的な2Dコンピュータグラフィックスでは、それは反転される(Yがピクセルのアドレスと共に増加する)。 – unwind

+0

これは、中心が原点の円にのみ有効です。 – ralphtheninja

+0

センターの座標を追加するだけです。 – Svante

0

、その後、1時は、X0である+ R SIN(2π/ 3)、Y0 + Rcos(2π/ 3)。

8

円の中心が(X0, Y0)である場合、半径Rとx軸との角度がシータである:

X1 = (R * cos theta) + X0 

Y1 = (R * sin theta) + Y0 
+0

これはあまり高く評価されるべきではありません。彼はシータの価値を知っているようには見えない。エリック・ベインビルの答えはより完全です。 – jmucchiello

+0

@jmucchiello - 私はあなたを理解しているかわかりません...私たちはアルゴリズムを求められました。私は仮パラメータを使って関数の記述をしました。この段階では、誰もセータの「価値」を知りません!私が時計の手の動きのスケーリング係数と、時差のそれぞれの角度をラジアンで計算していないということを意味するならば、私はそうではありませんでした。自分のコードを書く作業があります! – avstrallen

+1

ええ、私は1つで2つの質問をしたと思います。あなたの答えは最初の部分には完璧です。ありがとうございました。 – Surya

関連する問題