相似三角形

部署运行你感兴趣的模型镜像

相似三角形

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic

Problem Description

给出两个三角形的三条边,判断是否相似。

Input

多组数据,给出6正个整数,a1,b1,c1,a2,b2,c2,分别代表两个三角形。(边长小于100且无序

Output

如果相似输出YES,如果不相似输出NO,如果三边组不成三角形也输出NO。

Example Input
1 2 3 2 4 6
3 4 5 6 8 10
3 4 5 7 8 10
Example Output
NO
YES
NO

 

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a, b, c, d, e, f, n;
    while(scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f)!=EOF)
    {
        if( a < b )
        {
            n = b;
            b = a;
            a = n;

        }
        if( a < c )
        {
            n = c;
            c = a;
            a = n;
        }
        if( b < c )
        {
            n = c;
            c = b;
            b = n;
        }
        if( d < e )
        {
            n = e;
            e = d;
            d = n;
        }
         if( d < f )
         {
             n = f;
             f = d;
             d = n;
         }
         if( e < f )
         {
             n = f;
             f = e;
             e = n;
         }
         if((a * e ==b * d&&a * f == d * c)&&(a + b > c&&a + c > b&&b + c > a)&&(d + e > f&&d + f > e&&e + f > d))
            printf("YES\n");
            else
                printf("NO\n");
    }
            return 0;

}
 

转载于:https://my.oschina.net/u/2601269/blog/759761

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

在计算机科学和几何学中,相似三角形的判定和应用主要依赖于几何变换和数学计算。相似三角形是指两个三角形的对应角相等,且对应边成比例。这种特性在计算机视觉、图像处理、模式识别等领域有着广泛的应用。 ### 相似三角形判定原理 1. **角度判定**:如果两个三角形的三个对应角分别相等,则这两个三角形相似。由于三角形内角和恒为180度,只需验证两个角相等即可确定相似性。 2. **边长比例判定**:如果两个三角形的三对对应边成相同的比例,则这两个三角形相似。 3. **角边角(ASA)判定**:如果两个三角形的两对角及其夹边对应相等,则这两个三角形相似。 ### 算法实现 在实际的算法实现中,通常需要通过坐标点来判断三角形是否相似。假设我们有两个三角形 $ \triangle ABC $ 和 $ \triangle A'B'C' $,它们的顶点坐标分别为 $ A(x_1, y_1) $、$ B(x_2, y_2) $、$ C(x_3, y_3) $ 和 $ A'(x'_1, y'_1) $、$ B'(x'_2, y'_2) $、$ C'(x'_3, y'_3) $。 #### 1. 角度判定实现 ```python import math def calculate_angle(p1, p2, p3): # 计算向量 v1 = (p1[0] - p2[0], p1[1] - p2[1]) v2 = (p3[0] - p2[0], p3[1] - p2[1]) # 计算向量的点积和模长 dot_product = v1[0] * v2[0] + v1[1] * v2[1] magnitude_v1 = math.sqrt(v1[0]**2 + v1[1]**2) magnitude_v2 = math.sqrt(v2[0]**2 + v2[1]**2) # 计算夹角(弧度) angle = math.acos(dot_product / (magnitude_v1 * magnitude_v2)) return math.degrees(angle) def are_triangles_similar_by_angles(triangle1, triangle2): angles1 = sorted([ calculate_angle(triangle1[0], triangle1[1], triangle1[2]), calculate_angle(triangle1[1], triangle1[2], triangle1[0]), calculate_angle(triangle1[2], triangle1[0], triangle1[1]) ]) angles2 = sorted([ calculate_angle(triangle2[0], triangle2[1], triangle2[2]), calculate_angle(triangle2[1], triangle2[2], triangle2[0]), calculate_angle(triangle2[2], triangle2[0], triangle2[1]) ]) # 判断角度是否近似相等 for a1, a2 in zip(angles1, angles2): if abs(a1 - a2) > 1e-6: return False return True # 示例三角形 triangle1 = [(0, 0), (4, 0), (0, 3)] triangle2 = [(0, 0), (8, 0), (0, 6)] # 判断相似性 print(are_triangles_similar_by_angles(triangle1, triangle2)) # 输出: True ``` #### 2. 边长比例判定实现 ```python def calculate_side_lengths(p1, p2, p3): # 计算三角形的三条边的长度 side1 = math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2) side2 = math.sqrt((p2[0] - p3[0])**2 + (p2[1] - p3[1])**2) side3 = math.sqrt((p3[0] - p1[0])**2 + (p3[1] - p1[1])**2) return sorted([side1, side2, side3]) def are_triangles_similar_by_sides(triangle1, triangle2): sides1 = calculate_side_lengths(triangle1[0], triangle1[1], triangle1[2]) sides2 = calculate_side_lengths(triangle2[0], triangle2[1], triangle2[2]) # 计算比例 ratios = [s2 / s1 for s1, s2 in zip(sides1, sides2)] # 检查所有比例是否一致 ratio = ratios[0] for r in ratios[1:]: if abs(r - ratio) > 1e-6: return False return True # 示例三角形 triangle1 = [(0, 0), (4, 0), (0, 3)] triangle2 = [(0, 0), (8, 0), (0, 6)] # 判断相似性 print(are_triangles_similar_by_sides(triangle1, triangle2)) # 输出: True ``` #### 3. 应用场景 - **图像识别**:通过判断图像中的三角形是否相似,可以用于目标检测和识别。 - **计算机视觉**:在三维重建和姿态估计中,利用相似三角形的性质进行几何变换。 - **几何建模**:在CAD系统中,通过相似三角形的判定来验证模型的几何一致性。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值