重心

已知三角形三顶点ABC在空间中的坐标为已知三角形三顶点ABC在空间中的坐标为

A=(x1,y1,z1);B=(x2,y2,z2);C=(x3,y3,z3)A=(x_{1},y_{1},z_{1}); B=(x_{2},y_{2},z_{2}); C=(x_{3},y_{3},z_{3})

重心坐标=(x1+x2+x33,y1+y2+y33,z1+z2+z33)重心坐标=(\frac{x_{1}+x_{2}+x_{3}}{3},\frac{y_{1}+y_{2}+y_{3}}{3},\frac{z_{1}+z_{2}+z_{3}}{3})

内心

已知三角形三顶点ABC在空间中的坐标为已知三角形三顶点ABC在空间中的坐标为

A=(x1,y1,z1);B=(x2,y2,z2);C=(x3,y3,z3)A=(x_{1},y_{1},z_{1}); B=(x_{2},y_{2},z_{2}); C=(x_{3},y_{3},z_{3})

a=(x2x3)2+(y2y3)2+(z2z3)2a=\sqrt{(x_2-x_3)^2+(y_2-y_3)^2+(z_2-z_3)^2}

b=(x3x1)2+(y3y1)2+(z3z1)2b=\sqrt{(x_3-x_1)^2+(y_3-y_1)^2+(z_3-z_1)^2}

c=(x1x2)2+(y1y2)2+(z1z2)2c=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2}

内心坐标=(ax1+bx2+cx3a+b+c,ay1+by2+cy3a+b+c,az1+bz2+cz3a+b+c)内心坐标=(\frac{ax_1+bx_2+cx_3}{a+b+c},\frac{ay_1+by_2+cy_3}{a+b+c},\frac{az_1+bz_2+cz_3}{a+b+c})

垂心

已知三角形三顶点ABC在空间中的坐标为已知三角形三顶点ABC在空间中的坐标为

A=(x1,y1,z1);B=(x2,y2,z2);C=(x3,y3,z3)A=(x_{1},y_{1},z_{1}); B=(x_{2},y_{2},z_{2}); C=(x_{3},y_{3},z_{3})

a=(x2x1)(x3x1)+(y2y1)(y3y1)+(z2z1)(z3z1)a=(x_2-x_1)(x_3-x_1)+(y_2-y_1)(y_3-y_1)+(z_2-z_1)(z_3-z_1)

b=(x1x2)(x3x2)+(y1y2)(y3y2)+(z1z2)(z3z2)b=(x_1-x_2)(x_3-x_2)+(y_1-y_2)(y_3-y_2)+(z_1-z_2)(z_3-z_2)

c=(x1x3)(x2x3)+(y1y3)(y2y3)+(z1z3)(z2z3)c=(x_1-x_3)(x_2-x_3)+(y_1-y_3)(y_2-y_3)+(z_1-z_3)(z_2-z_3)

垂心坐标=(bcx1+acx2+abx3bc+ac+ab,bcy1+acy2+aby3bc+ac+ab,bcz1+acz2+abz3bc+ac+ab)垂心坐标=(\frac{bcx_1+acx_2+abx_3}{bc+ac+ab},\frac{bcy_1+acy_2+aby_3}{bc+ac+ab},\frac{bcz_1+acz_2+abz_3}{bc+ac+ab})

python

使用Triangle-calculations-yes库是一个很好的办法

或复制粘贴以下代码【没有外心】

import math

class TriangleCentres(object):
def __init__(self,pax=0, pbx=0, pcx=0, pay=0, pby=0, pcy=0, paz=0, pbz=0, pcz=0):
self.CoordinatePointAX = pax
self.CoordinatePointBX = pbx
self.CoordinatePointCX = pcx
self.CoordinatePointAY = pay
self.CoordinatePointBY = pby
self.CoordinatePointCY = pcy
self.CoordinatePointAZ = paz
self.CoordinatePointBZ = pbz
self.CoordinatePointCZ = pcz

def centroid(self):
planar_centroid_x = (self.CoordinatePointAX + self.CoordinatePointBX + self.CoordinatePointCX) / 3
planar_centroid_y = (self.CoordinatePointAY + self.CoordinatePointBY + self.CoordinatePointCY) / 3
planar_centroid_z = (self.CoordinatePointAZ + self.CoordinatePointBZ + self.CoordinatePointCZ) / 3
planar_centroid_xyz = (planar_centroid_x, planar_centroid_y, planar_centroid_z)
return planar_centroid_xyz

def incentre(self):
a = math.sqrt((self.CoordinatePointBX - self.CoordinatePointCX) ** 2 + (
self.CoordinatePointBY - self.CoordinatePointCY) ** 2 + (
self.CoordinatePointBZ - self.CoordinatePointCZ) ** 2)
b = math.sqrt((self.CoordinatePointCX - self.CoordinatePointAX) ** 2 + (
self.CoordinatePointCY - self.CoordinatePointAY) ** 2 + (
self.CoordinatePointCZ - self.CoordinatePointAZ) ** 2)
c = math.sqrt((self.CoordinatePointAX - self.CoordinatePointBX) ** 2 + (
self.CoordinatePointAY - self.CoordinatePointBY) ** 2 + (
self.CoordinatePointAZ - self.CoordinatePointBZ) ** 2)

spatial_incentre_x = (
a * self.CoordinatePointAX + b * self.CoordinatePointBX + c * self.CoordinatePointCX) / (
a + b + c)
spatial_incentre_y = (
a * self.CoordinatePointAY + b * self.CoordinatePointBY + c * self.CoordinatePointCY) / (
a + b + c)
spatial_incentre_z = (
a * self.CoordinatePointAZ + b * self.CoordinatePointBZ + c * self.CoordinatePointCZ) / (
a + b + c)
spatial_incentre_xyz = (spatial_incentre_x, spatial_incentre_y, spatial_incentre_z)
return spatial_incentre_xyz

def orthocentre(self):
a = (self.CoordinatePointBX - self.CoordinatePointAX) * (
self.CoordinatePointCX - self.CoordinatePointAX) + (
self.CoordinatePointBY - self.CoordinatePointAY) * (
self.CoordinatePointCY - self.CoordinatePointAY) + (
self.CoordinatePointBZ - self.CoordinatePointAZ) * (
self.CoordinatePointCZ - self.CoordinatePointAZ)
b = (self.CoordinatePointAX - self.CoordinatePointBX) * (
self.CoordinatePointCX - self.CoordinatePointBX) + (
self.CoordinatePointAY - self.CoordinatePointBY) * (
self.CoordinatePointCY - self.CoordinatePointBY) + (
self.CoordinatePointAZ - self.CoordinatePointBZ) * (
self.CoordinatePointCZ - self.CoordinatePointBZ)
c = (self.CoordinatePointAX - self.CoordinatePointCX) * (
self.CoordinatePointBX - self.CoordinatePointCX) + (
self.CoordinatePointAY - self.CoordinatePointCY) * (
self.CoordinatePointBY - self.CoordinatePointCY) + (
self.CoordinatePointAZ - self.CoordinatePointCZ) * (
self.CoordinatePointBZ - self.CoordinatePointCZ)
spatial_orthocentre_x = ((
b * c * self.CoordinatePointAX + a * c * self.CoordinatePointBX + a * b * self.CoordinatePointCX) / (
b * c + a * c + a * b))
spatial_orthocentre_y = ((
b * c * self.CoordinatePointAY + a * c * self.CoordinatePointBY + a * b * self.CoordinatePointCY) / (
b * c + a * c + a * b))
spatial_orthocentre_z = ((
b * c * self.CoordinatePointAZ + a * c * self.CoordinatePointBZ + a * b * self.CoordinatePointCZ) / (
b * c + a * c + a * b))
spatial_orthocentre_xyz = (spatial_orthocentre_x, spatial_orthocentre_y, spatial_orthocentre_z)
return spatial_orthocentre_xyz

由上,外心自己探究去吧