Python の宿題ここで答えます Part 1
■ このスレッドは過去ログ倉庫に格納されています
0797デフォルトの名無しさん
2009/04/17(金) 00:02:27ヘロンの公式を使うか、y2 == y3 のような制約があれば簡単なんだけど。
初歩的なことを見落として面倒なことをしている希ガス。ツッコミ歓迎。
# -*- coding: utf-8 -*-
import math
x1, y1 = 2.0, 4.0
x2, y2 = 4.0, 0.0
x3, y3 = 0.0, 2.0
# P1 (x1, y1) と P2 (x2, y2) を通る直線 y = ax + b の係数 a, b を求める
a = (y2 - y1) / (x2 - x1)
b = y1 - a * x1
# 直線 y = y3 と直線 y = ax + b の交点 P4 (x, y3) を求める
x = (y3 - b) / a
# P3 (x3, y3) と P4 (x, y3) が成す線分の長さを求める
bottom = math.fabs(x - x3)
# P1, P3, P4 が成す三角形の面積を求める
height1 = math.fabs(y1 - y3)
area1 = bottom * height1 / 2.0
# P2, P3, P4 が成す三角形の面積を求める
height2 = math.fabs(y2 - y3)
area2 = bottom * height2 / 2.0
# 二つの三角形の面積を加減して P1, P2, P3 が成す三角形の面積を求める
if y1 < y3 < y2 or y1 > y3 > y2:
print(area1 + area2)
else:
print(math.fabs(area1 - area2))
■ このスレッドは過去ログ倉庫に格納されています