2013-03-02 4 views
0

Я заметил, что в Python была функция sin, cos и tan.Python (pygame) Sin, Cos и Tan

Итак, я думал, что я хотел бы использовать это, чтобы сделать способ прицеливания в моей игре, к сожалению, словесное описание sin, cos, tan, asin, acos и atan очень запутанное.

Я знаю, как делать все правила из школы, мне просто нужно применить их к коду. Итак, вот что мне нужно делать, мне просто нужно знать, какой из них я должен использовать:

У меня есть

  1. Угол
  2. гипотенузы
    (я просто держать, что значение как далеко я хочу, чтобы объект путешествовал до того, как я снова промолчу его)

От угла, я хочу работать либо/и наоборот, и рядом.
Гипотенуза будет sin/asin и cos/acos. Который из? Я не знаю.

Как я могу ввести свои номера? Я просто делаю aim = cos(angle,hyp) или мне нужно применить некоторые другие вычисления?

+0

Что должно сбивать с толку? Использование математического метода тщательно и экстенсивно документировано ?! Вы вообще проводили какие-либо исследования? –

+0

«К сожалению, описание слова sin, cos, tan, asin, acos и atan очень сбивает с толку:« Вы вообще читали мой пост? Я хотел больше описания, я просто добавил свой пример, чтобы убедиться, что получаю правильный результат. Теперь я не могу ответить на эти хорошие ответы ниже, потому что вы испортили мою репутацию. – Bluetiger6001

+0

Что, возможно, означает @PrincessOftheUniverse, состоит в том, что эти функции не являются широко документированными в Python, потому что они являются хорошо известными математическими функциями, и они подробно объясняются во многих местах, таких как [Википедия] (http://en.wikipedia.org/wiki /Синус). Документация Python не имеет к этому никакого смысла. – rodrigo

ответ

3

Формулы:

adjacent = hypothenuse * math.cos(angle) 
opposite = hypothenuse * math.sin(angle) 

angle, где в радианах.

+0

Да, это ТОЧНО, о чем я просил. Благодаря! – Bluetiger6001

2

Ваша формулировка немного запутанна ... но я понимаю, что у вас есть точка в 2D-пространстве, и вы хотите продвинуть ее на определенное расстояние (гипотенуза), направленное на определенный угол над горизонтом. Если это так:

newX = oldX + dist * cos(angle) 
newY = oldY + dist * sin(angle) 

Это предполагает, что angle в радианах, что ось Y является положительным вверх, а угол 0 прицеливания вправо и PI/2 к вершине. Если это не так, вам может потребоваться немного пошевелиться.

+0

Да, спасибо, это очень помогло. Извините, я не очень хорошо объясняю вещи, печатая. :). Я бы поднял тебя, но кто-то сбил мой пост, поэтому я потерял свою репутацию. – Bluetiger6001