87,990
社区成员
发帖
与我相关
我的任务
分享
window.RightTriangle = function(o) {
var a = {
a: null,
b: null,
c: null,
A: null,
B: null,
C: 90
};
return o.a ? (a.a = o.a, o.b || o.c ? (o.b ? (a.b = o.b, a.c = Math.sqrt(Math.pow(a.a, 2) + Math.pow(a.b, 2))) : (a.c = o.c, a.b = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.a, 2))), a.B = t(Math.acos(a.a / a.c)), a.A = 90 - a.B) : (o.A || o.B) && (a = n(a, o.A, o.B), a.b = a.a * Math.tan(e(a.B)), a.c = a.a / Math.cos(e(a.B)))) : o.b ? (a.b = o.b, o.c ? (a.c = o.c, a.a = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.b, 2)), a.B = t(Math.acos(a.a / a.c)), a.A = 90 - a.B) : (o.A || o.B) && (a = n(a, o.A, o.B), a.a = a.b * Math.tan(e(a.A)), a.c = a.b / Math.cos(e(a.A)))) : o.c && (a.c = o.c, (o.A || o.B) && (a = n(a, o.A, o.B), a.a = a.c * Math.sin(e(a.A)), a.b = a.c * Math.cos(e(a.A)))),
a
}





window.RightTriangle = function(o) { // 定义 window.RightTriangle 为一个函数,带有一个参数,形参名为 o
var a = { // 执行函数时初始化一个对象 a
a: null,
b: null,
c: null,
A: null,
B: null,
C: 90
};
return // 返回结果为对象 a
o.a ? (
// 当参数o具有a属性时
a.a = o.a, // 初始化对象 a 的属性a 赋予参数的属性a
o.b || o.c ? (
// 当参数具有 b 属性或 c属性时
o.b ? (
// 如果参数具有 b 属性
a.b = o.b, // 对象 a 的属性b赋予参数的属性b
a.c = Math.sqrt(Math.pow(a.a, 2) + Math.pow(a.b, 2)) // 对象a的属性c赋值
) : (
// 如果参数不具有 b 属性,以c属性为依据计算
a.c = o.c, // 对象 a 的属性c赋予参数的属性c
a.b = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.a, 2)) // 对象a的属性b赋值
),
a.B = t(Math.acos(a.a / a.c)), // 对象a的属性B赋值,t方法参见其他js内容
a.A = 90 - a.B // 对象a的属性A赋值
) : (o.A || o.B) && (
a = n(a, o.A, o.B), // 当形参无 b 属性和 c 属性,且具有A或者B属性时,对象 a 从新赋值,方法 n 参见其他js内容
a.b = a.a * Math.tan(e(a.B)),
a.c = a.a / Math.cos(e(a.B))
)
) : o.b ? (
// 当参数o无a属性,且有b属性时
a.b = o.b,
o.c ? (
a.c = o.c,
a.a = Math.sqrt(Math.pow(a.c, 2) - Math.pow(a.b, 2)),
a.B = t(Math.acos(a.a / a.c)),
a.A = 90 - a.B
) : (o.A || o.B) && (
a = n(a, o.A, o.B),
a.a = a.b * Math.tan(e(a.A)),
a.c = a.b / Math.cos(e(a.A))
)
) : o.c && (
a.c = o.c,
(o.A || o.B) && (
a = n(a, o.A, o.B),
a.a = a.c * Math.sin(e(a.A)),
a.b = a.c * Math.cos(e(a.A))
)
),
a
}
把代码层次划出来,相对好理解一些
大致是判断三角形是不是符合要求的三角形,写着代码而不写注释的,应该拉出去烧死