dPoint3d pts[4];
for(int i = 0; i < 4; i++)
for(int y = 0; y < 3; y++)
if(pts[y].x < pts[y + 1].x)
{
dPoint3d tmp = pts[y];
pts[y] = pts[y + 1];
pts[y + 1] = tmp;
}
Внутренние точки отрезка.
Задача такая. Есть четыре точки в трехмерном пространстве.
Они расположены на одной прямой.
То есть заданы они массивом
dPoint3d pts[4];
структуры
struct dPoint3d
{
double x;
double y;
double z;
};
Надо получить на выходе функции две внутренние точки.
То есть крайние точки отсеять.
В общем, оно конечно решаемо,
но который день сижу туплю...
Все время получаются какие-то монстровидные функции.
А хотелось бы решить ее просто и красиво.
Может кого заинтересует?
ПОделитесь опытом, господа программеры! :)
Цитата:
Originally posted by f14tc
Привет всем!
Задача такая. Есть четыре точки в трехмерном пространстве.
Они расположены на одной прямой.
То есть заданы они массивом
dPoint3d pts[4];
структуры
struct dPoint3d
{
double x;
double y;
double z;
};
Надо получить на выходе функции две внутренние точки.
То есть крайние точки отсеять.
В общем, оно конечно решаемо,
но который день сижу туплю...
Все время получаются какие-то монстровидные функции.
А хотелось бы решить ее просто и красиво.
Может кого заинтересует?
ПОделитесь опытом, господа программеры! :)
Привет всем!
Задача такая. Есть четыре точки в трехмерном пространстве.
Они расположены на одной прямой.
То есть заданы они массивом
dPoint3d pts[4];
структуры
struct dPoint3d
{
double x;
double y;
double z;
};
Надо получить на выходе функции две внутренние точки.
То есть крайние точки отсеять.
В общем, оно конечно решаемо,
но который день сижу туплю...
Все время получаются какие-то монстровидные функции.
А хотелось бы решить ее просто и красиво.
Может кого заинтересует?
ПОделитесь опытом, господа программеры! :)
что то типа этого:
Код:
в итоге [1] и [2] точки являются центральными.
Цитата:
Originally posted by AndreySar
что то типа этого:
в итоге [1] и [2] точки являются центральными.
что то типа этого:
Код:
dPoint3d pts[4];
for(int i = 0; i < 4; i++)
for(int y = 0; y < 3; y++)
if(pts[y].x < pts[y + 1].x)
{
dPoint3d tmp = pts[y];
pts[y] = pts[y + 1];
pts[y + 1] = tmp;
}
for(int i = 0; i < 4; i++)
for(int y = 0; y < 3; y++)
if(pts[y].x < pts[y + 1].x)
{
dPoint3d tmp = pts[y];
pts[y] = pts[y + 1];
pts[y + 1] = tmp;
}
в итоге [1] и [2] точки являются центральными.
Спасибо!
Работает! :)
Только для того чтобы отработали все возможные отрезки, надо сделать еще сортировку по Y и Z.