triangle_area(pD, pB, pC) + triangle_area(pA, pC, pD)) pG = (triangle_area(pA, pB, pC) * pD + triangle_area(pC, pB, pD) * pA) / ( triangle_area(pA, pB, pC) + triangle_area(pC, pB, pD)) pM = (triangle_area(pD, pB, pC) * pA + triangle_area(pA, pB, pD) * pC) / ( triangle_area(pD, pB, pC) + triangle_area(pA, pB, pD)) #lineDE, = ax2.plot(*zip(pD,pE),linewidth = 1,color='b',linestyle=':') #lineBF, = ax2.plot(*zip(pB,pF),linewidth = 1,color='b',linestyle=':') #lineDH, = ax2.plot(*zip(pD,pH),linewidth = 1,color='b',linestyle=':') #lineBG, = ax2.plot(*zip(pB,pG),linewidth = 1,color='b',linestyle=':') #lineCN, = ax2.plot(*zip(pC,pN),linewidth = 1,color='b',linestyle=':') #lineAN, = ax2.plot(*zip(pA,pN),linewidth = 1,color='b',linestyle=':') #lineAR, = ax2.plot(*zip(pA,pR),linewidth = 1,color='b') pJ = return_intersection_under_Ceva_Theorem(pB, pD, pC, pF, pE) pK = return_intersection_under_Ceva_Theorem(pD, pB, pA, pH, pG) pL = return_intersection_under_Ceva_Theorem(pC, pA, pD, pG, pF) pI = return_intersection_under_Ceva_Theorem(pA, pC, pB, pE, pH) pO = return_intersection_under_Ceva_Theorem(pC, pA, pN, pK, pJ) lineCK, = ax2.plot(*zip(pC, pK), linewidth=1, color='b', linestyle=':') lineAJ, = ax2.plot(*zip(pA, pJ), linewidth=1, color='b', linestyle=':') lineBL, = ax2.plot(*zip(pB, pL), linewidth=1, color='b', linestyle=':') lineDI, = ax2.plot(*zip(pD, pI), linewidth=1, color='b', linestyle=':') lineMN, = ax2.plot(*zip(pM, pN), linewidth=1, color='b') lineGE, = ax2.plot(*zip(pG, pE), linewidth=1, color='b') lineHF, = ax2.plot(*zip(pH, pF), linewidth=1, color='b') pO_on_BCD = project_a_point_to_a_plane(pO, pB - pD, pC - pD, pJ)
linez.set_color('k') ax2.text(0,0,6, r'$z_s$', fontsize=18,verticalalignment='bottom', horizontalalignment='left') ''' pA = np.array([0, 0, 0]) pB = np.array([3, 0, 0]) pC = np.array([2, 2.5, 0]) pD = (0.6 * pB + 0.4 * pC) pE = (0.6 * pA + 0.4 * pC) lineAC, = ax2.plot(*zip(pA, pC), linewidth=2, color='b') lineBA, = ax2.plot(*zip(pB, pA), linewidth=2, color='b') lineBC, = ax2.plot(*zip(pB, pC), linewidth=2, color='b') lineAD, = ax2.plot(*zip(pA, pD), linewidth=2, color='b') lineBE, = ax2.plot(*zip(pB, pE), linewidth=2, color='b') pO = return_intersection_under_Ceva_Theorem(pA, pB, pC, pD, pE) pF = return_third_point_on_a_triagle_under_Ceva_Theorem(pA, pB, pC, pD, pE) lineCF, = ax2.plot(*zip(pC, pF), linewidth=1, color='b', linestyle=':') ax2.text(*pA, s=r'$A$', fontsize=12, verticalalignment='bottom', horizontalalignment='right', linespacing=12) ax2.text(*pB, s=r'$B$', fontsize=12, verticalalignment='bottom', horizontalalignment='left',
pH = (pA + pB) / 2 pG = (0.4 * pA + 0.6 * pD) lineDE, = ax2.plot(*zip(pD, pE), linewidth=1, color='b') lineBF, = ax2.plot(*zip(pB, pF), linewidth=1, color='b') lineDH, = ax2.plot(*zip(pD, pH), linewidth=1, color='b') lineBG, = ax2.plot(*zip(pB, pG), linewidth=1, color='b') pN = return_third_point_on_a_triagle_under_Ceva_Theorem(pB, pD, pC, pF, pE) pNp = return_third_point_on_a_triagle_under_Ceva_Theorem(pD, pB, pA, pH, pG) lineCN, = ax2.plot(*zip(pC, pN), linewidth=1, color='b') lineANp, = ax2.plot(*zip(pA, pNp), linewidth=1, color='b') #lineAR, = ax2.plot(*zip(pA,pR),linewidth = 1,color='b') pJ = return_intersection_under_Ceva_Theorem(pB, pD, pC, pF, pE) pK = return_intersection_under_Ceva_Theorem(pD, pB, pA, pH, pG) lineCK, = ax2.plot(*zip(pC, pK), linewidth=1, color='b') lineAJ, = ax2.plot(*zip(pA, pJ), linewidth=1, color='b') ax2.text(*pA, s=r'$A$', fontsize=12, verticalalignment='bottom', horizontalalignment='right') ax2.text(*pB, s=r'$B$', fontsize=12, verticalalignment='bottom', horizontalalignment='right')
pP = pC - pB + pQ pD = (0.4 * pE + 0.6 * pC) pH = (0.2 * pG + 0.8 * pC) lineAP, = ax2.plot(*zip(pA, pP), linewidth=2, color='b') lineBG, = ax2.plot(*zip(pB, pG), linewidth=2, color='b') lineBE, = ax2.plot(*zip(pB, pE), linewidth=2, color='b') lineCG, = ax2.plot(*zip(pC, pG), linewidth=2, color='b') lineCE, = ax2.plot(*zip(pC, pE), linewidth=2, color='b') lineQG, = ax2.plot(*zip(pQ, pG), linewidth=2, color='b') lineQE, = ax2.plot(*zip(pQ, pE), linewidth=2, color='b') linePG, = ax2.plot(*zip(pP, pG), linewidth=2, color='b') linePE, = ax2.plot(*zip(pP, pE), linewidth=2, color='b') pI = return_intersection_under_Ceva_Theorem(pA, pE, pC, pD, pB) pK = return_intersection_under_Ceva_Theorem(pA, pG, pC, pH, pB) lineGI, = ax2.plot(*zip(pG, pI), linewidth=1, color='b', linestyle=':') lineEK, = ax2.plot(*zip(pE, pK), linewidth=1, color='b', linestyle=':') lineGD, = ax2.plot(*zip(pG, pD), linewidth=1, color='b', linestyle=':') lineHE, = ax2.plot(*zip(pH, pE), linewidth=1, color='b', linestyle=':') pJ = return_intersection_under_Ceva_Theorem(pG, pE, pB, pI, pK) pL = return_intersection_under_Ceva_Theorem(pG, pE, pC, pD, pH) pQ1 = return_Menelaus_third_outer_point_2nd(pQ, pB, pE, pI, pA) pP1 = return_Menelaus_third_outer_point_2nd(pP, pB, pE, pI, pA) pF = return_third_point_on_a_triagle_under_Ceva_Theorem(pG, pE, pB, pI, pK) pQ2 = return_third_point_on_a_triagle_under_Ceva_Theorem(pQ, pG, pE, pF, pQ1) pP2 = return_third_point_on_a_triagle_under_Ceva_Theorem(pP, pG, pE, pF, pQ1) pPc = return_intersection_under_Ceva_Theorem(pP, pG, pE, pF, pP1)
#### The plotting of a vector-based graphics using the above points location information. fig2 = pyplot.figure(2, figsize=(4, 4), dpi=100) ax2 = p3.Axes3D(fig2) ax2.view_init(elev=15, azim=-95) ax2.set_color_cycle('b') pA = np.array([2.5, -1, 3]) pB = np.array([4, 0, 0]) pD = np.array([0, 0, 0]) pC = np.array([1, -2.5, 0]) pN = (0.6 * pA + 0.4 * pB) pH = (0.7 * pB + 0.3 * pD) pI = (0.45 * pB + 0.55 * pC) pE = return_intersection_under_Ceva_Theorem(pA, pD, pB, pH, pN) pF = return_intersection_under_Ceva_Theorem(pA, pC, pB, pI, pN) pJ = return_third_point_on_a_triagle_under_Ceva_Theorem(pD, pC, pN, pF, pE) pG = return_Menelaus_third_outer_point(pD, pC, pN, pF, pE) lineAC, = ax2.plot(*zip(pA, pC), linewidth=1, color='b') lineGE, = ax2.plot(*zip(pG, pE), linewidth=1, color='b') lineCG, = ax2.plot(*zip(pC, pG), linewidth=1, color='b') lineAD, = ax2.plot(*zip(pA, pD), linewidth=1, color='b') lineAH, = ax2.plot(*zip(pA, pH), linewidth=1, color='b') lineAI, = ax2.plot(*zip(pA, pI), linewidth=1, color='b') lineAB, = ax2.plot(*zip(pA, pB), linewidth=1, color='b') lineBC, = ax2.plot(*zip(pC, pB), linewidth=1, color='b') lineDB, = ax2.plot(*zip(pD, pB), linewidth=1, color='b') lineNC, = ax2.plot(*zip(pN, pC), linewidth=1, color='b') lineDC, = ax2.plot(*zip(pD, pC), linewidth=1, color='b')
circleHE = circle_full(np.cross(pB-pC,pB-pA), pH-centerHE, r_cirHE, 30) + centerHE ax2.plot(*np.transpose(circleHE),linewidth=1,linestyle=':',color='r') lineAC, = ax2.plot(*zip(pA,pC),linewidth = 2,color='b') # graph step 4 ax2.text(*pM, s = r"$M$", fontsize=12,verticalalignment='top', horizontalalignment='right') incenterACD,inradiusACD,normvecACD, pp, ppp, pppp= incircle3D(pA,pC,pD) incircleACD = circle_full(incenterACD-pO, pF-incenterACD, np.linalg.norm(pF-incenterACD), 30) + incenterACD ax2.plot(*np.transpose(incircleACD),linewidth=1,linestyle=':') #ax2.text(*incenterACD, s = r"$I_{ACD}$", fontsize=12,verticalalignment='bottom', horizontalalignment='right') #ax2.text(*centerHE, s = r"$I_{ABC}$", fontsize=12,verticalalignment='top', horizontalalignment='left') #lineIacdO, = ax2.plot(*zip(pO,incenterACD),linewidth = 1,color='b',linestyle=':') #lineIabcO, = ax2.plot(*zip(pO,centerHE),linewidth = 1,color='b',linestyle=':') # return all ceva points and connect their lines and plot Gergonne point pK = return_intersection_under_Ceva_Theorem(pA,pD,pB,pN,pH) pI = return_intersection_under_Ceva_Theorem(pA,pB,pC,pE,pM) pL = return_intersection_under_Ceva_Theorem(pA,pD,pC,pF,pM) pJ = return_intersection_under_Ceva_Theorem(pB,pD,pC,pF,pE) pGP = return_intersection_under_Ceva_Theorem(pB,pA,pF,pL,pJ) ax2.text(*pK, s = r'$K$', fontsize=10,verticalalignment='top', horizontalalignment='right') ax2.text(*pI, s = r'$I$', fontsize=10,verticalalignment='top', horizontalalignment='right') ax2.text(*pL, s = r'$L$', fontsize=10,verticalalignment='top', horizontalalignment='right') ax2.text(*pJ, s = r'$J$', fontsize=10,verticalalignment='top', horizontalalignment='right') ax2.text(*pGP, s = r'$GP$', fontsize=10,verticalalignment='top', horizontalalignment='right') ax2.scatter3D(*zip(pE,pF,pG,pH,pN,pM),c = ['blue']) ax2.scatter3D(*zip(pO),c = ['red']) ax2.scatter3D(*zip(pK,pI,pL,pJ),c = ['green']) ax2.scatter3D(*zip(pGP),c = ['green'],s = [18])