центр поиска 2D-треугольника

c opengl rotation geometry

26453 просмотра

5 ответа

(Да, к сожалению, это вопрос домашней работы)

Мне была дана структура для двумерного треугольника с координатами x и y, переменной поворота и т. Д. С точки, созданной этими координатами x и y, я должен нарисовать треугольник вокруг точки и соответствующим образом повернуть его с помощью переменной поворота.

Я знаком с рисованием треугольников в OpenGl с GL_TRIANGLES. Моя проблема заключается в извлечении середины треугольника и рисовании вершин вокруг него.

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

Благодарю.

edit: Да, то, что я ищу, - это центр тяжести.

Автор: ray Источник Размещён: 17.05.2019 03:26

Ответы (5)


34 плюса

Решение

Существуют разные «типы» центров треугольника. Подробная информация о: Центры треугольника . Быстрый метод нахождения центра треугольника - это усреднение всех координат вашей точки. Например:

GLfloat centerX = (tri[0].x + tri[1].x + tri[2].x) / 3;
GLfloat centerY = (tri[0].y + tri[1].y + tri[2].y) / 3;

Когда вы найдете центр, вам нужно будет повернуть треугольник вокруг центра. Для этого переведите так, чтобы центр теперь находился на (0, 0). Выполните свое вращение. Теперь отмените перевод, который вы выполнили ранее.

Автор: strager Размещён: 07.02.2009 11:04

6 плюса

Наверное, ты имеешь в виду центр тяжести треугольника !?
Это можно легко вычислить с помощью 1/3 (A + B + C), где A, B и C - соответствующие точки треугольника. Если у вас есть свои очки, вы можете просто умножить их на свою матрицу вращения, как обычно. Надеюсь, ты прав.

Автор: newgre Размещён: 07.02.2009 11:05

1 плюс

В треугольнике есть несколько точек, которые можно считать их центром (ортоцентром, центроидом и т. Д.). Этот раздел статьи в Википедии о треугольниках содержит больше информации. Просто взгляните на фотографии, чтобы получить быстрый обзор.

Автор: gclj5 Размещён: 07.02.2009 11:05

0 плюса

Под «средним» вы имеете в виду «центроид», ака центр тяжести, если бы это был трехмерный объект постоянной толщины и плотности?

Если это так, выберите две точки и найдите между ними промежуточную точку. Затем возьмите эту середину и третью точку и найдите точку 1/3 пути между ними (ближе к средней точке). Это твой центр. Я не занимаюсь математикой для вас.

Автор: Chris Lutz Размещён: 07.02.2009 11:06

0 плюса

#include<iostream>  // Desouky
#include <cmath>
#include<utility>       // for pair
 using namespace std;


 void printAngle(pair<int, int> a, pair<int, int> b,
pair<int, int> c)
 {
float X = (a.first + b.first + c.first) / 3;
float Y = (a.second + b.second + c.second) / 3;
cout.precision(6);
cout << fixed << X << " " << Y;
}
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
pair<int, int> A;
pair<int, int> B;
pair<int, int> C;


cin >> A.first >> A.second;
cin >> B.first >> B.second;
cin >> C.first >> C.second;

 printAngle(A, B, C);

 }
Автор: user10733968 Размещён: 04.12.2018 05:03
Вопросы из категории :
32x32