You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSXGraph非无限线段与圆求交仍按无限直线计算交点异常问题

问题原因

JSXGraph的交点计算逻辑中,alwaysIntersect: false仅针对无限直线的交点生效,你通过line元素加straightFirst: false、straightLast: false模拟的有限线段,不会被交点计算模块识别为有限长度对象,求解时仍然按无限直线计算两个数学交点,不在线段范围内的交点也不会自动隐藏。

解决方案

直接使用JSXGraph原生的segment元素创建有限线段,原生线段的交点计算逻辑会自动限制在两个端点的范围内,不在线段上的交点会默认不显示,不需要额外配置alwaysIntersect参数。

修正后的代码如下:

var segment = app.board.create('segment', [[-2,-2],[1,1]], {})
var circle = app.board.create('circle', [[0,0],[-2,0]], {})
// 交点会自动判断是否落在线段范围内,不符合条件的自动隐藏
app.board.create('intersection', [segment, circle, 0])
app.board.create('intersection', [segment, circle, 1])

如果有特殊需求必须用line元素模拟线段,可以手动给交点添加可见性判断回调:

var line = app.board.create('line', [[-2,-2],[1,1]], {straightFirst:false, straightLast:false })
var circle = app.board.create('circle', [[0,0],[-2,0]], { })
app.board.create('intersection', [line, circle, 0], {
    visible: function() {
        return this.isOnSegment(this.point1.coords.usrCoords, this.point2.coords.usrCoords, this.coords.usrCoords);
    }
})
app.board.create('intersection', [line, circle, 1], {
    visible: function() {
        return this.isOnSegment(this.point1.coords.usrCoords, this.point2.coords.usrCoords, this.coords.usrCoords);
    }
})

内容的提问来源于stack exchange,提问作者Porizm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:18:01