生活随笔
收集整理的這篇文章主要介紹了
【中兴笔试题】三角形面积
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路
這里先補充幾個公式:
- 余弦定理:a2=b2+c2-2bc*cosA
- 三角形面積公式:S=1/2absinC=1/2acsinB=1/2bcsinA
三角形面積分三種情況
- 第一種相離
- 第二種包含
- 第三種相交
import java.math.BigDecimal;
public class Solution {final
double PI =
3.1415926;public
double fun(
int firstX,
int firstY,
int firstR,
int secondX,
int secondY,
int secondR) {
double ans =
0.0;
double distance = Math.
sqrt((firstX - secondX) * (firstX - secondX) + (firstY - secondY) * (firstY - secondY));
if (firstR + secondR <
distance)
return 0.0;
else if (Math.
abs(secondR - firstR) >=
distance) {
if (secondR >= firstR)ans = PI * firstR * firstR;
elseans = PI * secondR * secondR;}
else {
double angle1 =
2 * Math.
acos((firstR * firstR +
distance *
distance - secondR * secondR) / (
2.0 * firstR *
distance));
double angle2 =
2 * Math.
acos((secondR * secondR +
distance *
distance - firstR * firstR) / (
2.0 * secondR *
distance));ans = firstR * firstR * angle1 /
2.0 + secondR * secondR * angle2 /
2.0- firstR * firstR * Math.
sin(angle1) /
2.0 - secondR * secondR * Math.
sin(angle2) /
2.0;}BigDecimal bg = new BigDecimal(ans);ans = bg.setScale(
6, BigDecimal.ROUND_HALF_UP).doubleValue();
return ans;}public static
void main(String[] args) {System.
out.println(new Solution().fun(
0,
0,
1,
0,
1,
1));}
}
總結
以上是生活随笔為你收集整理的【中兴笔试题】三角形面积的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。