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
相关产品推荐
相关产品推荐

