У меня есть закрытый многоугольник, который имеет параметры атрибутов на каждом краю. Они хранятся в точке в начале следующего сегмента. Итак, точка [0] удерживает атрибут для точки края [0] -> точка [1]. < /P>
Теперь я хочу отменить многоугольник. Информация о краях, однако, теперь должна храниться в другой точке.#include
#include
#include
// assume
struct Point{
double x,y;
int att;
void setAttribute(int i){att=i;}
int attribute()const{return att;}
};
// and in my class I have
std::vector
m_PList;
// where the std::vector is a hybrid std::list/std::vector container. Anyway.
void reverseMyPoly(){
auto swapStuff = [](Point* a, const Point* b) {
a->setAttribute(b->attribute());
// there's a lot more attribute code here
};
auto copy = m_PList; // !! this one is expensive !!
std::reverse(m_PList.begin(), m_PList.end());
const size_t n = m_PList.size();
// Each point i in the reversed polygon gets the edge_type that was
// originally associated with the edge from (i+1) % n to (i) % n
for (size_t i = 0; i < n; ++i) {
size_t original_index = (n - i - 2 + n) % n;
swapStuff(&m_PList, ©[original_index]);
}
}
int main()
{
m_PList = {{0,0,0}, {1,0,1}, {2,2,2}, {0,3,3}};
reverseMyPoly();
for(auto&p:m_PList){
std::cout
Подробнее здесь: https://stackoverflow.com/questions/796 ... attributes
Оптимизировать обратный многоугольник с атрибутами края ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1750754929
Anonymous
У меня есть закрытый многоугольник, который имеет параметры атрибутов на каждом краю. Они хранятся в точке в начале следующего сегмента. Итак, точка [0] удерживает атрибут для точки края [0] -> точка [1]. < /P>
Теперь я хочу отменить многоугольник. Информация о краях, однако, теперь должна храниться в другой точке.#include
#include
#include
// assume
struct Point{
double x,y;
int att;
void setAttribute(int i){att=i;}
int attribute()const{return att;}
};
// and in my class I have
std::vector
m_PList;
// where the std::vector is a hybrid std::list/std::vector container. Anyway.
void reverseMyPoly(){
auto swapStuff = [](Point* a, const Point* b) {
a->setAttribute(b->attribute());
// there's a lot more attribute code here
};
auto copy = m_PList; // !! this one is expensive !!
std::reverse(m_PList.begin(), m_PList.end());
const size_t n = m_PList.size();
// Each point i in the reversed polygon gets the edge_type that was
// originally associated with the edge from (i+1) % n to (i) % n
for (size_t i = 0; i < n; ++i) {
size_t original_index = (n - i - 2 + n) % n;
swapStuff(&m_PList[i], ©[original_index]);
}
}
int main()
{
m_PList = {{0,0,0}, {1,0,1}, {2,2,2}, {0,3,3}};
reverseMyPoly();
for(auto&p:m_PList){
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79677281/optimize-reverse-polygon-with-edge-attributes[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия