центр поиска 2D-треугольника
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:046 плюса
Наверное, ты имеешь в виду центр тяжести треугольника !?
Это можно легко вычислить с помощью 1/3 (A + B + C), где A, B и C - соответствующие точки треугольника. Если у вас есть свои очки, вы можете просто умножить их на свою матрицу вращения, как обычно. Надеюсь, ты прав.
1 плюс
В треугольнике есть несколько точек, которые можно считать их центром (ортоцентром, центроидом и т. Д.). Этот раздел статьи в Википедии о треугольниках содержит больше информации. Просто взгляните на фотографии, чтобы получить быстрый обзор.
Автор: gclj5 Размещён: 07.02.2009 11:050 плюса
Под «средним» вы имеете в виду «центроид», ака центр тяжести, если бы это был трехмерный объект постоянной толщины и плотности?
Если это так, выберите две точки и найдите между ними промежуточную точку. Затем возьмите эту середину и третью точку и найдите точку 1/3 пути между ними (ближе к средней точке). Это твой центр. Я не занимаюсь математикой для вас.
Автор: Chris Lutz Размещён: 07.02.2009 11:060 плюса
#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
Вопросы из категории :
- c Как вы форматируете unsigned long long int, используя printf?
- c What are the barriers to understanding pointers and what can be done to overcome them?
- c Как реализовать продолжения?
- c Как вы передаете функцию в качестве параметра в C?
- c Как получить список каталогов в C?
- opengl Использование мышиного прокрутки в GLUT
- opengl Простой 3D графический проект?
- opengl OpenGL, вращающий камеру вокруг точки
- opengl Многоголовая система отображения
- opengl центр поиска 2D-треугольника
- rotation Алгоритм вращения фигуры тетриса
- rotation Перезапуск активности при ротации Android
- rotation Лучшие практики для операций кругового сдвига (поворота) в C ++
- geometry Головоломка: Найти самый большой прямоугольник (проблема максимального прямоугольника)
- geometry Обнаружение столкновений круглого прямоугольника (пересечение)
- geometry Уравнение для тестирования, если точка находится внутри круга
- geometry Как нарисовать перспективную сетку в 2D