事实证明,annularWedge
图表包的功能不能将半径设为 0 作为内半径。您必须wedge
改用。
对我来说,0 的内半径只是退化的情况,annularWedge
并且应该表现得像wedge
,所以我尝试将它们组合起来:
mywedge r2 r1 d a
| r1 == 0 = wedge r2 d a
| otherwise = annularWedge r2 r1 d a
当然,它不起作用,我无法弄清楚错误的含义:
Non type-variable argument in the constraint: RealFloat (N t)
(Use FlexibleContexts to permit this)
When checking that ‘mywedge’ has the inferred type
mywedge :: forall t.
(RealFloat (N t), TrailLike t, V t ~ V2) =>
N t -> N t -> Direction V2 (N t) -> Angle (N t) -> t
事实上,事实证明,annularWedge
并且wedge
有不同的约束,这让我很惊讶:
annularWedge :: (TrailLike t, V t ~ V2, N t ~ n, RealFloat n) => n -> n -> Direction V2 n -> Angle n -> t
wedge :: (InSpace V2 n t, OrderedField n, TrailLike t) => n -> Direction V2 n -> Angle n -> t
那么如何将这两个函数组合成一个接受内半径为 0 并做正确事情的理智函数呢?