Reputation:
I'm trying to find the common line angle between adjacent roof lines having different pitch as shown in below diagram
Please let me know how the angle can be determined .
I tried arctan(8/12)= 33.69 degree and arctan(14/12)=49.3987 degree but couldn't find any solution around it.
Upvotes: 0
Views: 875
Reputation: 29244
What you are looking for is the angle ψ formed between one side and the projection of the crease line
Note that the other angle is just 90° - ψ
.
The crease line in 3D has a direction vector e
with three components (e_x,e_y,e_z)
of which the z-component is ignored to get
tan(ψ) = e_y / e_x
But how do we get these direction components?
Look at the problem in 3D, and the crease line is where the two rooflines intersect
The first roofline is a rotation about the x-axis with pitch 14/12
, or angle
φ_x = atan(14/12) = 49.39870°
The direction normal to the plane is thus
| 0 | | 0 |
n_x = | -sin(φ_x) | = | -8/√85 |
| cos(φ_x) | | 6/√85 |
Similarly the second roofline is a rotation about the y-axis with pitch 8/12
, or angle
φ_y = atan(y/12) = 33.6901°
The direction normal to the plane is thus
| -sin(φ_y) | | -2/√13 |
n_y = | 0 | = | 0 |
| cos(φ_y) | | 3/√13 |
The crease line direction is found from the vector cross-product
| e_x | | 21/√1105 |
e = n_y × n_x = | e_y | = | 12/√1105 |
| e_z | | 14/√1105 |
So the roofline angle is
ψ = atan(e_x/e_y) = atan( 21/12 ) = 29.7449°
There is a shortcut to the above.
ψ = atan(p_2/p_1) = atan(8/14) = 29.7449°
where p_1 = 14/12
and p_2 = 9/12
are the two pitch values.
Upvotes: 1
Reputation: 8314
I like John's answer. For a shorter version: the two roof parts define two planes. Calculate the intersection line between the two planes and determine its angle up from horizontal, i.e., in the plane defined by the Z direction and the intersection line itself. I assume that is the gist of Joh's answer as well. And, I totally agree that this question has nothing whatsoever to do with programming.
Upvotes: 0