Поворот точки и полигона относительно другой точки Си. Point and polygon rotation around the origin C code
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Программирование
- Просмотров: 2439
typedef struct { int16_t X; int16_t Y; }Point, * pPoint;
Точка:
Point RotatePoint(Point Coord, Point Coord0, float32_t angle){ //angle max is 2pi rad static float32_t cosV; static float32_t sinV; static float32_t Xo; static float32_t Yo; static float32_t X; static float32_t Y; // angle*= 0.017453292f; cosV = arm_cos_f32(angle); sinV = arm_sin_f32(angle); X = (float32_t)Coord.X; Y = (float32_t)Coord.Y; Xo = (float32_t)Coord0.X; Yo = (float32_t)Coord0.Y; Coord.X = (uint16_t)(Xo + (((X - Xo)*cosV)) + (((Yo - Y)*sinV))+0.5); Coord.Y = (uint16_t)(Yo + (((X - Xo)*sinV)) + (((Y - Yo)*cosV))+0.5); return Coord; }
Полигон поворот положительные градусы = по часовой стрелке (координата Y - сверху вниз, X - слева направо) в (0.001 * angle_deg) градусах:
void RotatePoly(Point* pToPoints, uint8_t NumbOfPoints, const pPoint Origin, int32_t angle_deg){ int i; float32_t angle = 1.7453292e-5 * (float32_t)angle_deg; for(i = 0; i < NumbOfPoints; i++){ pToPoints[i] = RotatePoint(pToPoints[i], *Origin, angle); } }
Фильмы для сознания: права животных
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Биотехнологии
- Просмотров: 2061
Фильмы для сознания: осознавая связь
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Биотехнологии
- Просмотров: 2163
Продвинутые возможности отладки в IAR
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Программирование микроконтроллеров
- Просмотров: 2026
Coocox где скачать
- Информация о материале
- Автор: Super User
- Категория: Новости
- Просмотров: 3857
Страница 143 из 186