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};=NNorm[(P2-P1)(P4-P1)]+Norm[(P2-P3)(P4-P3)];=AbsNNorm[(P2-P1)(P4-P1)]-Norm[(P2-P3)(P4-P3)];M1=;M2=;M3=;M4=;=N[Norm[(M3-M4)(M1-M4)]];=N[Norm[M1-M4]+Norm[M2-M1]+Norm[M2-M3]+Norm[M3-M4]];=N[Norm[P3-P1]+Norm[P4-P2]];If==,==;If==,=;p=Grid[{{QuadrilateralArea,ParallelogramArea,ParallelogramPerimeter,DiagonalsSum},{,,,}},FrameAll,ItemSize->15,ItemStyle->15];q=Grid[{{ParallelogramVector1,ParallelogramVector3,ParallelogramVector2,ParallelogramVector4},{N[M4-M1],N[M3-M2],N[M2-M1],N[M3-M4]}},FrameAll,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},AxesTrue,BoxedFalse,BoxRatiosAutomatic,PlotRangeAll,ViewPoint{5,-2.4,1.},ImageSize700]
A
q
1
2
1
2
A
q1
1
2
1
2
P1+P2
2
P3+P2
2
P3+P4
2
P1+P4
2
A
p
P
p
P
p1
A
p
1
2
A
q
A
q
A
q
A
p
1
2
A
q1
A
q
A
q1
A
q
A
p
P
p
P
p1
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[]:=
VarignonTheorem4,-,3,12,,7,16,,-5,6,,2
1
2
7
2
11
2
1
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.