latest

Bài 16 Đường Trung Bình Của Tam Giác —

Bài 16 Đường Trung Bình Của Tam Giác —

เส้นกลางของสามเหลี่ยม

Bài 16 Đường Trung Bình Của Tam Giác —

เส้นกลาง Midsegment Midline สามเหลี่ยม จุดกึ่งกลาง Midpoint ขนาน ครึ่งหนึ่ง Coordinate Geometry Python คำนวณ

เนื้อหาเกี่ยวข้อง — อ่านต่อ: ชมรมนกลงทุน — คู่มือฉบับสมบูรณ์ 2026

ทฤษฎีสูตรตัวอย่าง
Midpoint((x1+x2)/2, (y1+y2)/2)M(2,3) N(6,7) → (4,5)
Distance√((x2-x1)²+(y2-y1)²)A(0,0) B(3,4) → 5
Midsegment= ½ × ด้านที่สามด้าน=10 → เส้นกลาง=5
Area½|x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|พื้นที่สามเหลี่ยม
Centroid((x1+x2+x3)/3, (y1+y2+y3)/3)จุดศูนย์ถ่วง

Python Geometry Calculator

# geometry.py — Triangle Geometry Calculator

import math

from dataclasses import dataclass

from typing import Tuple, List



@dataclass

class Point:

    x: float

    y: float



    def __repr__(self):

        return f"({self.x}, {self.y})"



def midpoint(p1: Point, p2: Point) -> Point:

    """คำนวณจุดกึ่งกลาง"""

    return Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2)



def distance(p1: Point, p2: Point) -> float:

    """คำนวณระยะทางระหว่างสองจุด"""

    return math.sqrt((p2.x - p1.x)**2 + (p2.y - p1.y)**2)



def triangle_area(a: Point, b: Point, c: Point) -> float:

    """คำนวณพื้นที่สามเหลี่ยมจากพิกัด"""

    return abs(a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y)) / 2



def centroid(a: Point, b: Point, c: Point) -> Point:

    """คำนวณจุดศูนย์ถ่วง"""

    return Point((a.x + b.x + c.x) / 3, (a.y + b.y + c.y) / 3)



def midsegments(a: Point, b: Point, c: Point) -> List[Tuple[Point, Point, float]]:

    """คำนวณเส้นกลางทั้ง 3 เส้น"""

    m_ab = midpoint(a, b)  # จุดกึ่งกลาง AB

    m_bc = midpoint(b, c)  # จุดกึ่งกลาง BC

    m_ac = midpoint(a, c)  # จุดกึ่งกลาง AC



    segments = [

        (m_ab, m_bc, distance(m_ab, m_bc)),  # ขนาน AC

        (m_bc, m_ac, distance(m_bc, m_ac)),  # ขนาน AB

        (m_ab, m_ac, distance(m_ab, m_ac)),  # ขนาน BC

    ]

    return segments



# ตัวอย่าง

A = Point(0, 0)

B = Point(8, 0)

C = Point(4, 6)



print("=== Triangle Geometry ===")

print(f"  A = {A}")

print(f"  B = {B}")

print(f"  C = {C}")

print(f"\n  Sides:")

print(f"    AB = {distance(A, B):.2f}")

print(f"    BC = {distance(B, C):.2f}")

print(f"    AC = {distance(A, C):.2f}")

print(f"\n  Area = {triangle_area(A, B, C):.2f}")

print(f"  Centroid = {centroid(A, B, C)}")



print(f"\n  Midsegments:")

segs = midsegments(A, B, C)

sides = [("AC", distance(A, C)), ("AB", distance(A, B)), ("BC", distance(B, C))]

for i, (p1, p2, length) in enumerate(segs):

    side_name, side_len = sides[i]

    print(f"    {p1} → {p2} | Length = {length:.2f} "

          f"(½ of {side_name} = {side_len/2:.2f})")

Advanced Geometry

Bài 16 Đường Trung Bình Của Tam Giác —
# advanced_geometry.py — Advanced Calculations

from dataclasses import dataclass

import math



@dataclass

class Triangle:

    a: Point

    b: Point

    c: Point



    @property

    def sides(self):

        return (

            distance(self.a, self.b),

            distance(self.b, self.c),

            distance(self.a, self.c),

        )



    @property

    def perimeter(self) -> float:

        return sum(self.sides)



    @property

    def area(self) -> float:

        return triangle_area(self.a, self.b, self.c)



    @property

    def area_heron(self) -> float:

        """Heron's formula"""

        a, b, c = self.sides

        s = (a + b + c) / 2

        return math.sqrt(s * (s - a) * (s - b) * (s - c))



    @property

    def incircle_radius(self) -> float:

        """รัศมีวงกลมแนบใน"""

        return self.area / (self.perimeter / 2)



    @property

    def circumcircle_radius(self) -> float:

        """รัศมีวงกลมล้อมรอบ"""

        a, b, c = self.sides

        return (a * b * c) / (4 * self.area)



    @property

    def angles_deg(self):

        """คำนวณมุมทั้ง 3 มุม (องศา)"""

        a, b, c = self.sides

        A = math.degrees(math.acos((b**2 + c**2 - a**2) / (2 * b * c)))

        B = math.degrees(math.acos((a**2 + c**2 - b**2) / (2 * a * c)))

        C = 180 - A - B

        return (round(A, 2), round(B, 2), round(C, 2))



    @property

    def triangle_type(self) -> str:

        angles = self.angles_deg

        if any(a == 90 for a in angles):

            return "Right Triangle (สามเหลี่ยมมุมฉาก)"

        elif any(a > 90 for a in angles):

            return "Obtuse Triangle (สามเหลี่ยมมุมป้าน)"

        return "Acute Triangle (สามเหลี่ยมมุมแหลม)"



tri = Triangle(Point(0, 0), Point(8, 0), Point(4, 6))



print("=== Triangle Properties ===")

a, b, c = tri.sides

print(f"  Sides: {a:.2f}, {b:.2f}, {c:.2f}")

print(f"  Perimeter: {tri.perimeter:.2f}")

print(f"  Area: {tri.area:.2f}")

print(f"  Area (Heron): {tri.area_heron:.2f}")

print(f"  Angles: {tri.angles_deg}")

print(f"  Type: {tri.triangle_type}")

print(f"  Incircle r: {tri.incircle_radius:.2f}")

print(f"  Circumcircle R: {tri.circumcircle_radius:.2f}")



# Application in IT

applications = {

    "Computer Graphics": "Transform, Rotation, Projection ใช้ Matrix + Vector",

    "Game Development": "Collision Detection ตรวจจุดอยู่ในสามเหลี่ยม",

    "GIS/Mapping": "คำนวณพื้นที่ ระยะทาง Haversine Formula",

    "Machine Learning": "Distance Metrics: Euclidean, Manhattan, Cosine",

    "CAD/CAM": "ออกแบบชิ้นส่วน Mesh Generation Tessellation",

    "Robotics": "Path Planning, Obstacle Avoidance, SLAM",

}



print(f"\n\nGeometry in IT:")

for field, desc in applications.items():

    print(f"  [{field}]: {desc}")

Visualization

# visualization.py — Triangle Visualization

# import matplotlib.pyplot as plt

# import numpy as np

#

# def plot_triangle(A, B, C):

#     fig, ax = plt.subplots(1, 1, figsize=(8, 6))

#

#     # Draw triangle

#     triangle = plt.Polygon([A, B, C], fill=False, edgecolor='blue', linewidth=2)

#     ax.add_patch(triangle)

#

#     # Draw midsegments

#     M_AB = ((A[0]+B[0])/2, (A[1]+B[1])/2)

#     M_BC = ((B[0]+C[0])/2, (B[1]+C[1])/2)

#     M_AC = ((A[0]+C[0])/2, (A[1]+C[1])/2)

#

#     for p1, p2 in [(M_AB, M_BC), (M_BC, M_AC), (M_AB, M_AC)]:

#         ax.plot([p1[0], p2[0]], [p1[1], p2[1]], 'r--', linewidth=1.5)

#

#     # Label vertices

#     for point, label in [(A, 'A'), (B, 'B'), (C, 'C')]:

#         ax.annotate(label, point, fontsize=14, ha='center', va='bottom')

#

#     # Label midpoints

#     for point, label in [(M_AB, 'M_AB'), (M_BC, 'M_BC'), (M_AC, 'M_AC')]:

#         ax.plot(*point, 'ro', markersize=6)

#         ax.annotate(label, point, fontsize=10, color='red')

#

#     ax.set_aspect('equal')

#     ax.grid(True, alpha=0.3)

#     ax.set_title('Triangle with Midsegments')

#     plt.savefig('triangle_midsegments.png', dpi=150)

#     plt.show()

#

# plot_triangle((0, 0), (8, 0), (4, 6))



# Distance Formulas for IT

formulas = {

    "Euclidean": {

        "formula": "√(Σ(xi-yi)²)",

        "use": "Straight-line distance, Default metric",

        "python": "np.linalg.norm(a - b)",

    },

    "Manhattan": {

        "formula": "Σ|xi-yi|",

        "use": "Grid-based distance, City blocks",

        "python": "np.sum(np.abs(a - b))",

    },

    "Cosine": {

        "formula": "1 - (a·b)/(|a||b|)",

        "use": "Text similarity, Embeddings",

        "python": "1 - np.dot(a, b)/(np.linalg.norm(a)*np.linalg.norm(b))",

    },

    "Haversine": {

        "formula": "2r·arcsin(√(sin²(Δφ/2)+cos(φ1)cos(φ2)sin²(Δλ/2)))",

        "use": "GPS distance on Earth surface",

        "python": "haversine(lat1, lon1, lat2, lon2)",

    },

}



print("Distance Formulas:")

for name, info in formulas.items():

    print(f"\n  [{name}]")

    for k, v in info.items():

        print(f"    {k}: {v}")

เคล็ดลับ

  • Midpoint: เฉลี่ย x และ y ของจุดปลายทั้งสอง
  • Midsegment: ขนานด้านที่สาม ยาวครึ่งหนึ่ง
  • Heron: ใช้ Heron's Formula คำนวณพื้นที่จากด้าน 3 ด้าน
  • numpy: ใช้ numpy สำหรับ Vector Operations เร็วกว่า
  • shapely: ใช้ shapely สำหรับ Complex Geometric Operations

เส้นกลางของสามเหลี่ยมคืออะไร

Midsegment เชื่อมจุดกึ่งกลางสองด้าน ขนานด้านที่สาม ยาวครึ่งหนึ่ง 3 เส้น แบ่ง 4 สามเหลี่ยมเท่ากัน

แนะนำเพิ่มเติม — อีบุ๊กการลงทุน SiamCafeBook

เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: การทํา seo คือ — ข้อมูลครบถ้วน 2026

เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง IS-IS Protocol Message Queue Design

XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง