In[]:=
VarignonTheorem3DGeneral::usage="By joining the midpoints of each side of a quadrilateral, the figure is a parallelogram of area equal to half of the original quadrilateral (it is not fulfilled for skew quadrilaterals). The perimeter of the parallelogram is equal to the sum of diagonals of the original quadrilateral. References: Personal, based in the Varignon's Theorem";
In[]:=
VarignonTheorem[{x1_,y1_,z1_},{x2_,y2_,z2_},{x3_,y3_,z3_},{x4_,y4_,z4_}]:=​​Module{},P1={x1,y1,z1};P2={x2,y2,z2};P3={x3,y3,z3};P4={x4,y4,z4};​​​​
A
q
=N
1
2
Norm[(P2-P1)(P4-P1)]+
1
2
Norm[(P2-P3)(P4-P3)];​​
A
q1
=AbsN
1
2
Norm[(P2-P1)(P4-P1)]-
1
2
Norm[(P2-P3)(P4-P3)];​​M1=
P1+P2
2
;M2=
P3+P2
2
;M3=
P3+P4
2
;​​M4=
P1+P4
2
;​​
A
p
=N[Norm[(M3-M4)(M1-M4)]];​​
P
p
=N[Norm[M1-M4]+Norm[M2-M1]+Norm[M2-M3]+Norm[M3-M4]];​​
P
p1
=N[Norm[P3-P1]+Norm[P4-P2]];​​If
A
p
==
1
2
A
q
,
A
q
==
A
q
;​​If
A
p
==
1
2
A
q1
,
A
q
=
A
q1
;​​p=Grid[{{QuadrilateralArea,ParallelogramArea,ParallelogramPerimeter,DiagonalsSum},{
A
q
,
A
p
,
P
p
,
P
p1
}},FrameAll,ItemSize->15,ItemStyle->15];​​q=Grid[{{ParallelogramVector1,ParallelogramVector3,ParallelogramVector2,ParallelogramVector4},{N[M4-M1],N[M3-M2],N[M2-M1],N[M3-M4]}},FrameAll,ItemSize->15,ItemStyle->15];​​Print[p];​​Print[" "];​​Print[q];​​Print[" "];​​Show[qua=Polygon[{P1,P2,P3,P4}];​​paral=Polygon[{M1,M2,M3,M4}];{Graphics3D[{EdgeForm[Thick],Yellow,Opacity[0.2],qua}],Graphics3D[{EdgeForm[Thick],Green,Opacity[0.8],paral}],Graphics3D[{Black,Ball[P1,0.1]}],Graphics3D[{Black,Ball[P2,0.1]}],Graphics3D[{Black,Ball[P3,0.1]}],Graphics3D[{Black,Ball[P4,0.1]}],Graphics3D[{LightGray,Ball[M1,0.1]}],Graphics3D[{LightGray,Ball[M2,0.1]}],Graphics3D[{LightGray,Ball[M3,0.1]}],Graphics3D[{LightGray,Ball[M4,0.1]}]},AxesLabel->{x,y,z},AxesOrigin{0,0,0},AxesTrue,BoxedFalse,BoxRatiosAutomatic,PlotRangeAll,ViewPoint{5,-2.4,1.},ImageSize700]​​​​​​
Example 1:
In[]:=
VarignonTheorem[{5,4,0},{10,-2,8},{5,9,1},{6,7,2}]
QuadrilateralArea
ParallelogramArea
ParallelogramPerimeter
DiagonalsSum
22.7335
11.0028
16.6316
16.6316
ParallelogramVector1
ParallelogramVector3
ParallelogramVector2
ParallelogramVector4
{-2.,4.5,-3.}
{-2.,4.5,-3.}
{0.,2.5,0.5}
{0.,2.5,0.5}
Out[]=
It’s a skew quadrilateral, the areas are not fullfilled.
Example 2:
In[]:=
VarignonTheorem4,-
1
2
,3,12,
7
2
,7,16,
11
2
,-5,6,
1
2
,2
QuadrilateralArea
ParallelogramArea
ParallelogramPerimeter
DiagonalsSum
60.3738
30.1869
23.9871
23.9871
ParallelogramVector1
ParallelogramVector3
ParallelogramVector2
ParallelogramVector4
{-3.,-1.5,-2.5}
{-3.,-1.5,-2.5}
{6.,3.,-4.}
{6.,3.,-4.}
Out[]=
it´s a concave quadrilateral, Varignon’s theorem is fullfilled.
Example 3:
In[]:=
VarignonTheorem[{1,1,0},{5,4,0},{2,4,0},{5,0,0}]
QuadrilateralArea
ParallelogramArea
ParallelogramPerimeter
DiagonalsSum
2.
1.
7.16228
7.16228
ParallelogramVector1
ParallelogramVector3
ParallelogramVector2
ParallelogramVector4
{0.,-2.,0.}
{0.,-2.,0.}
{0.5,1.5,0.}
{0.5,1.5,0.}
It’s a crossed quadrilateral, Varignon’s theorem is fullfilled.
Example 4:
It’s a convex quadrilateral, Varignon’s theorem is fullfilled.