Вопрос

У меня есть квадрат, где ближайшие точки находятся в 1 единице от центра. Смотрите мою диаграмму ASCII ниже:

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

Следовательно, расстояние от начала координат до углов - SQRT (2). Мне нужна функция, которая возвращает расстояние от происхождения в точку на квадрате под любым углом. Например, для ввода 0 функция вернет 1. Для ввода 45 функция вернет расстояние к углу, квадратный корень 2. Затем для 90, она снова вернет 1.

Другими словами, когда вы график функции с помощью полярного графика, она проведет квадрат.

Я считаю, что функция будет чем -то вроде этого:

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

Единственная проблема заключается в том, что вышеупомянутая функция не будет отображать стороны квадрата. Мне нужно что -то, что привлекает все 4 стороны.

Я знаю, что существует тригонометрическая функция для чего -то подобного, но я буду использовать эту функцию в JavaScript, поэтому я смогу использовать только стандартные функции тригонометрии.

Любая помощь будет оценена. Заранее спасибо.

Это было полезно?

Решение

Думаю, это было бы быстрее:

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

Другие советы

Оригинальный пост помечен JavaScript, но мне нужно было это для напечатанных языков (например, C), где вы не можете модуль плавания.

Ответ Monomano верен, но для любого, кто приезжает сюда, нуждается в том же, вот ответ Monomano, измененный для C / objc / java / и т. Д.

/** 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);
}

Я придумал уравнение, которое может работать с калькуляторами Ti из -за их функции TheTa Step в разделе Window их функции Polar Graph. Я не знаю, поможет ли это вам. Я предполагаю, что это может работать, только если вы можете настроить шаг тета (или степень).

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

где s - длина стороны желаемого квадрата

Установите шаг TheTA в PI/4, чтобы построить основные точки, необходимые для создания изображения квадрата

Опять же, это работает с калькуляторами TI.

Я недостаточно знаком с JavaScript, но в формате, используемом в Wolfram Alpha, формула радиуса под углом:

мин (1/ABS (cos (Theta)), 1/ABS (SIN (THETA)))))))

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top