Відповіді:
Ви можете використовувати параболу, щоб визначити значення функції синуса. Це має ту перевагу, що коріння рівно -pi / 2 і Pi / 2 , які, як правило , не у випадку з іншими швидких наближень на основі Ряд Тейлора або MaclaurinSeries .
public float Sin(float x)
{
const float B = 4 / PI;
const float C = -4 / (PI*PI);
return -(B * x + C * x * ((x < 0) ? -x : x));
}
Ось порівняння фактичної функції синуса:
Який діапазон вхідних значень для вашої функції sin () ? Для того, для чого ви його використовуєте, здається, що вони можуть бути обмеженими, а значить, ви можете попередньо обчислити значення . Наприклад, якщо ви округляєте вхідні значення до найближчого ступеня, у вас є лише 360 можливих значень - просто попередньо обчисліть їх і зберігайте в таблиці.
Якщо вам потрібно трохи більше значень, скажімо, на один десятковий знак , ви можете інтерполювати з таблиці - я не знайомий із шумом перлин , але, здається, слово "шум" означає, що воно не вимагає високої точності. :) (Ви також можете просто зробити більшу таблицю, 3600 записів - це не так багато місця).
Ви також можете прочитати це , він має швидке наближення синуса та косинуса