2011-01-25 42 views
7

Tôi có hình vuông, nơi các điểm gần nhất cách trung tâm 1 điểm. Xem sơ đồ ascii của tôi bên dưới:Vẽ hình vuông có tọa độ cực

+-----------+ 
|   | 
| x  | 
|-----+  | 
|   | 
|   | 
+-----------+ 

Do đó, khoảng cách từ gốc đến góc là sqrt (2). Tôi cần một hàm trả về khoảng cách từ gốc đến một điểm trên hình vuông ở bất kỳ góc nào. Ví dụ, đối với một đầu vào là 0, hàm sẽ trả về 1. Đối với đầu vào là 45, hàm sẽ trả về khoảng cách đến một góc, căn bậc hai của 2. Sau đó, cho 90, nó sẽ trả về 1 lần nữa.

Nói cách khác, khi bạn vẽ đồ thị hàm bằng đồ thị cực, nó sẽ vẽ một hình vuông.

Tôi tin rằng chức năng sẽ là một cái gì đó như thế này:

f(x) = sqrt(tan(x)^2+1) 

Vấn đề duy nhất là chức năng trên sẽ không vẽ đồ thị các cạnh của hình vuông. Tôi cần cái gì đó vẽ tất cả 4 mặt.

Tôi biết rằng có một hàm lượng giác cho một cái gì đó tương tự như thế này, nhưng tôi sẽ sử dụng hàm này trong javascript, vì vậy tôi sẽ chỉ có thể sử dụng các hàm lượng giác chuẩn.

Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn trước.

+0

Bạn thực sự chỉ cần biết câu trả lời cho 1/8 quảng trường ... – Pointy

+0

Có, nhưng vấn đề là để có được mọi gle tương ứng với phần chính xác của góc 1/8 đó. – Joel

+0

Hey @Joel - quay lại và chọn câu trả lời của MonoMano vì đó là câu trả lời đúng :-) – Pointy

Trả lời

9

Đây sẽ là nhanh hơn tôi đoán:

function getLengthForDeg(phi){ 
    phi = ((phi+45)%90-45)/180*Math.PI; 
    return 1/Math.cos(phi); 
} 
+0

Tôi nghĩ rằng bạn đang thiếu một tính toán căn bậc hai, nhưng tôi có thể hiểu nhầm điều gì đó. – Pointy

+0

Tôi không nghĩ rằng tôi cần điều đó. Hãy thử chạy nó, có lẽ tôi đã sai. –

+0

Tôi thích cách bạn chuẩn hóa góc. – Pointy

1

tôi đã đưa ra một phương trình có thể làm việc với máy tính TI vì chức năng bước theta của họ trong phần cửa sổ chức năng biểu đồ cực của họ. Tôi không biết nếu nó giúp bạn. Tôi đoán nó chỉ có thể hoạt động nếu bạn có thể cấu hình bước theta (hoặc độ).

r = (((s*sqrt(2)) - 5)/4) sin(4(x - (pi/8)) + (((s*sqrt(2)) + s)/4) 

đó s là độ dài của các bên trong quảng trường mong muốn

Đặt bước theta đến pi/4 để vẽ những điểm chính cần thiết để tạo ra hình ảnh của một hình vuông

Một lần nữa, điều này làm việc với TI Máy tính.

1

Bài đăng gốc được gắn thẻ Javascript, nhưng tôi cần điều này cho các ngôn ngữ đã nhập (ví dụ: C), nơi bạn không thể modulus một phao.

câu trả lời MonoMano là đúng, nhưng đối với bất cứ ai khác đến đây cần được điều tương tự, đây là câu trả lời MonoMano của sửa đổi cho C/ObjC/Java/etc:

/** c.f. http://stackoverflow.com/a/4788992/153422 
* M_PI_2 is a constant: "PI/2" 
* M_PI_4 is a constant: "PI/4" 
*/ 
double getSquarePolarRadiusForRad(double phi){ 
    double phiInPiBy4Range = phi; 
    while(phiInPiBy4Range > M_PI_4) 
     phiInPiBy4Range -= M_PI_2; 
    while(phiInPiBy4Range < - M_PI_4) 
     phiInPiBy4Range += M_PI_2; 

    return 1/cos(phiInPiBy4Range); 
} 
1

Tôi không đủ quen thuộc với Javascript, nhưng trong các định dạng được sử dụng trong Wolfram Alpha, công thức cho bán kính từ góc là:

min (1/abs (cos (theta)), 1/abs (sin (theta))))

+0

Điều này dường như không đúng ... nếu bạn chỉ có một góc, không có nói bán kính sẽ là bao lâu. – Werner

+0

@Werner Vì OP được hỏi cụ thể về một hình vuông có độ dài 1, bạn không cần bán kính. –

Các vấn đề liên quan