Построение трегольника через центр параллельно xy

Задача возникла для решения ее в системе Вектор при моделировании лучей свертки по точкам свертки  и центр так, чтобы ракрыв луча оствался параллельный плоскости xy.

Для решения задачи могут быть использованы методы:

1) Метод OrtOtrGorizontal () перпендикуляр-горизонталь к отрезку общего положения
или
2) Mетод ParalOtr() вычисления второй точки отрезка CD, параллельного и равного AB
 

Листинг по 1-му методу

// Построение трегольника через задаваемый центр, параллельно xy (см. методы внизу)

var pc = Vector.p(0,0,0); // центр

var pn = Vector.p(4,0,0); // точка на средней прямой треугольника
var p1 = Vector.p(4,-1,0); // 2-я точка треугольника
var p2 = Vector.p(4,1,0); // 3-я точка треугольника
 

// находим точки на перпендикуляре-горизонтали (длины s=1)
// к отрезку общего положения pc-pn в т. pn

var p2 = Vector.OrtOtrGorizontal (pc,pn, pn, 1)
var p1 = Vector.OrtOtrGorizontal (pc,pn, pn, -1)

//строим треугольник и заливаем цветом
Vector.Trian.ss (pc, p1,p2)
Vector.Trian.SetNuNvFillColor (11, 11, 250, 0,0)
 

var pn = Vector.p(4,0,5)

var p2 = Vector.OrtOtrGorizontal (pc,pn, pn, 1)
var p1 = Vector.OrtOtrGorizontal (pc,pn, pn, -1)
Vector.Trian.ss (pc, p1,p2)
Vector.Trian.SetNuNvFillColor (11, 11, 250, 0,0)
 
 

var pn = Vector.p(4,4,5)

var p2 = Vector.OrtOtrGorizontal (pc,pn, pn, 1)
var p1 = Vector.OrtOtrGorizontal (pc,pn, pn, -1)
Vector.Trian.ss (pc, p1,p2)
Vector.Trian.SetNuNvFillColor (11, 11, 250, 0,0)
 
 

var pn = Vector.p(-4,4,5)

var p2 = Vector.OrtOtrGorizontal (pc,pn, pn, 1)
var p1 = Vector.OrtOtrGorizontal (pc,pn, pn, -1)
Vector.Trian.ss (pc, p1,p2)
Vector.Trian.SetNuNvFillColor (11, 11, 250, 0,0)
 

var pn = Vector.p(-4,-4,5)

var p2 = Vector.OrtOtrGorizontal (pc,pn, pn, 1)
var p1 = Vector.OrtOtrGorizontal (pc,pn, pn, -1)
Vector.Trian.ss (pc, p1,p2)
Vector.Trian.SetNuNvFillColor (11, 11, 250, 0,0)

// поместить в группу
var n1 = Vector.LastNmb()
var ngroup
Vector.MoveToGroup (1, n1+1, ngroup) // - название группы
 
 
 

// Два метода, которые можно использовать для решения задачи

/*
Метод OrtOtrGorizontal () перпендикуляр-горизонталь
к отрезку общего положения

Перпендикуляр-горизонталь (длины s) к отрезку общего положения AB в т. B
Синтаксис
var D = Vector.OrtOtrGorizontal (A, B, С, s)
Точки A, B - точки прямой общего положения
C - точка на отрезке
s - длина перпендикуляра
D - точка вычисляется

Mетод ParalOtr() вычисления второй точки
отрезка CD, параллельного и равного AB
Синтаксис
var D = Vector.ParalOtr(A, B, C)
A, B, - точки первого отрезка
С - точка второго отрезка
D - искомая точка

Листинг
var A = Vector.P(0,0,0)
var B = Vector.P(4,4,3)
Vector.otrezok.ss (A,B)
var C = Vector.P(2,0,0)
var D = Vector.ParalOtr(A, B, C)
Vector.otrezok.ss (D,C)
*/