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

JsxGraph中curvedifference绘制韦恩图区域异常问题求助

解决JSXGraph韦恩图特定区域黄色填充问题

问题分析

你需要黄色填充的是属于B(红色圆)但不属于A(蓝色圆)的区域(原描述的“A∩B - A”应为笔误,对应集合运算中的B - A)。当前代码通过curveunion(A,B)减去A得到的是整个B圆,因此实际输出与预期不符。

修复方案

直接使用curvedifference计算B与A的差集,无需额外的curveunion中间对象。修改后的完整代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>curvedifference Demo</title>
  <script type="text/javascript" src="https://jsxgraph.uni-bayreuth.de/distrib/jsxgraphcore.js"></script>
</head>
<body>
  <div id="jxgbox" style="width:400px;height:400px;"></div>
  <script type="text/javascript">
    var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-3, 3, 3, -3], axis:true});

    var circle1 = board.create('circle', [[-1, 0], 2], {strokeWidth:2, strokeColor:'blue', fillOpacity:0.3});
    var circle2 = board.create('circle', [ [0, Math.sqrt(3)], 2], {strokeWidth:2, strokeColor:'red', fillOpacity:0.3});
    var circle3 = board.create('circle', [[1, 0], 2], {strokeWidth:2, strokeColor:'brown', fillOpacity:0.3});

    // 直接计算B减去A的区域
    board.create("curvedifference", [circle2, circle1],{
        fillColor: "yellow",
        fillOpacity: 1
    } )
    board.update();
  </script>
</body>
</html>

代码说明

  • curvedifference([circle2, circle1])会精确计算出仅属于红色圆(B)、但不与蓝色圆(A)重叠的区域,完全匹配你的预期效果。
  • 保留了原三个圆的样式配置,确保韦恩图的基础视觉结构不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:52