package controls
{
import com.adobe.flex.extras.controls.springgraph.Graph;
import com.adobe.flex.extras.controls.springgraph.IEdgeRenderer;
import com.adobe.flex.extras.controls.springgraph.Item;
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.geom.Matrix;
import flash.text.TextFieldAutoSize;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
import mx.core.UITextField;
import mx.graphics.ImageSnapshot;
public class CusEdge implements IEdgeRenderer
{
private var thickness:int=2;
private var lineColor:uint=0x232323;
private var arrowSize:int=5;
public function CusEdge()
{
}
/** 实现画线接口 **/
public function draw(g:Graphics, fromView:UIComponent, toView:UIComponent, fX:int, fY:int, tX:int, tY:int, graph:Graph):Boolean
{
var fromItem: Item = (fromView as IDataRenderer).data as Item;
var toItem: Item = (toView as IDataRenderer).data as Item;
var node:Object=graph.getLinkData(fromItem,toItem);
if (node.@fromID!=(fromView as CusNode).id && node.@fromID==(toView as CusNode).id)
{
return drawNew(g,toView,fromView,tX,tY,fX,fY,graph);
}
else
{
return drawNew(g,fromView,toView,fX,fY,tX,tY,graph);
}
return true;
}
/** 画线函数 **/
public function drawNew(g:Graphics, fromView:UIComponent, toView:UIComponent, fX:int, fY:int, tX:int, tY:int, graph:Graph):Boolean
{
var fromX:int;
var fromY:int;
var toX:int;
var toY:int;
var totoX:int;
var totoY:int;
var eid:String;
var halfFromH:Number=fromView.height/2;
var halfFromW:Number=fromView.width/2;
var halfToH:Number=toView.height/2;
var halfToW:Number=toView.width/2;
var angle:Number = getAngle( fX, fY, tX, tY);
var toAngle:Number=Math.atan2(halfToH,halfToW)*(180/Math.PI);
var fromAngle:Number=Math.atan2(halfFromH,halfFromW)*(180/Math.PI);
var k:Number=Math.tan(angle*(Math.PI/180));
///to坐标换算
if (angle>=0 && angle<90)//1象限
{
if (angle>toAngle)
{
toX=tX - halfToH / k;
toY=tY + halfToH;
}
else
{
toX=tX - halfToW;
toY=tY + halfToW * k;
}
}
if (angle>=90 && angle<=180)//2象限
{
if (angle+toAngle>180)
{
toX=tX + halfToW ;
toY=tY - halfToW * k;
}
else
{
toX=tX - halfToH / k;
toY=tY + halfToH;
}
}
if (angle>=-90 && angle<0)//4象限
{
if (Math.abs(angle)>toAngle)
{
toX=tX + halfToH / k;
toY=tY - halfToH;
}
else
{
toX=tX - halfToW;
toY=tY + halfToW * k;
}
}
if (angle<-90 && angle>=-180)//3象限
{
if (angle+180>toAngle)
{
toX=tX + halfToH / k;
toY=tY - halfToH;
}
else
{
toX=tX + halfToW;
toY=tY - halfToW * k;
}
}
///from坐标换算
if (angle>0 && angle<=90)
{
if (angle>fromAngle)
{
fromX=fX + halfFromH / k;
fromY=fY - halfFromH;
}
else
{
fromX=fX + halfFromW;
fromY=fY - halfFromW * k;
}
}
if (angle>90 && angle<=180)
{
if (angle+fromAngle>180)
{
fromX=fX - halfFromW;
fromY=fY + halfFromW * k;
}
else
{
fromX=fX + halfFromH / k;
fromY=fY - halfFromH;
}
}
if (angle>=-90 && angle<=0)
{
if (Math.abs(angle)>fromAngle)
{
fromX=fX - halfFromH / k;
fromY=fY + halfFromH;
}
else
{
fromX=fX + halfFromW;
fromY=fY - halfFromW * k;
}
}
if (angle<-90 && angle>=-180)
{
if (angle+180>fromAngle)
{
fromX=fX - halfFromH / k;
fromY=fY + halfFromH;
}
else
{
fromX=fX - halfFromW;
fromY=fY + halfFromW * k;
}
}
totoX=toX - arrowSize * Math.cos(angle*(Math.PI/180));
totoY=toY + arrowSize * Math.sin(angle*(Math.PI/180));
g.lineStyle(thickness,lineColor);
g.moveTo(fromX,fromY);
g.lineTo(totoX,totoY);
var fromItem: Item = (fromView as IDataRenderer).data as Item;
var toItem: Item = (toView as IDataRenderer).data as Item;
var node:Object=graph.getLinkData(fromItem,toItem);
if (node!=null)
{
if (node.@id)
eid=node.@prop;
// if (node.width)
// weight=node.width;
// if (node.bytewidth)
// bytewidth=node.bytewidth;
}
var uit:UITextField = new UITextField();
uit.textColor = lineColor;
uit.text = eid;
uit.autoSize = TextFieldAutoSize.LEFT;
var textBitmapData:BitmapData = ImageSnapshot.captureBitmapData(uit);
var sizeMatrix:Matrix = new Matrix();
var coef:Number = Math.min(uit.measuredWidth/textBitmapData.width,uit.measuredHeight/textBitmapData.height);
sizeMatrix.a = coef;
sizeMatrix.d = coef;
textBitmapData = ImageSnapshot.captureBitmapData(uit,sizeMatrix);
g.lineStyle(0,0,0);
var sm:Matrix = new Matrix();
sm.tx = (fromX+toX)/2;
sm.ty = (fromY+toY)/2;
g.beginBitmapFill(textBitmapData,sm,false);
g.drawRect((fromX+toX)/2,(fromY+toY)/2,uit.measuredWidth,uit.measuredHeight);
g.endFill();
drawArrowHead(fromX,fromY,toX,toY,g);
return true;
}
/** 画箭头 **/
private function drawArrowHead(startX:int,startY:int,endX:int,endY:int,graphics:Graphics):void{
//得到箭头的角度
var angle:Number = this.getAngle(startX,startY,endX,endY);
var centerX:Number = endX - arrowSize * Math.cos(angle*(Math.PI/180));
var centerY:Number = endY + arrowSize * Math.sin(angle*(Math.PI/180));
var leftX:Number = centerX + arrowSize * Math.cos((angle+120)*(Math.PI/180));
var leftY:Number = centerY - arrowSize * Math.sin((angle+120)*(Math.PI/180));
var rightX:Number = centerX + arrowSize * Math.cos((angle+240)*(Math.PI/180));
var rightY:Number = centerY - arrowSize * Math.sin((angle+240)*(Math.PI/180));
graphics.lineStyle(2,lineColor,1);
graphics.beginFill(lineColor);
graphics.moveTo(endX,endY);
graphics.lineTo(leftX,leftY);
graphics.lineTo(centerX,centerY);
graphics.lineTo(rightX,rightY);
graphics.lineTo(endX,endY);
graphics.endFill();
}
/** 得到箭头的角度 **/
private function getAngle(startX:int,startY:int,endX:int,endY:int):Number{
var temX:Number = endX - startX;
var temY:Number = startY - endY;
var angle:Number = Math.atan2(temY,temX)*(180/Math.PI);
return angle;
}
}
}
分享到:
相关推荐
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文详细探讨了大语言模型(LLMs)在教育应用中遇到的知识冲突问题,包括概念定义、事实陈述和逻辑推理层面的认知不一致性。文章分析了知识冲突的技术成因,如训练数据噪声、参数化知识表示的局限、推理机制的缺陷、模型架构的不足及外部知识的偏差,并探讨了这些因素对教育应用的深远影响。文中提出了多维度的解决路径,如通过数据增强优化知识表示、利用提示强化上下文连贯、开发量规完善模型评估等。此外,文章从社会文化的宏观视角剖析了知识冲突的外部驱动因素,探讨如何在多元异质、动态演进的社会建构语境中构建开放进取、兼容融通的智能教育应用体系。 适合人群:从事教育技术研究的学者、教育工作者、人工智能研究人员和技术开发者。 使用场景及目标:①帮助教育工作者理解大语言模型在教育应用中的局限性;②为技术人员提供优化大语言模型教育应用的具体策略;③促进教育人工智能技术的可靠性、适应性和普及性提升。 其他说明:文章强调了知识冲突的有效化解不仅能够提升大语言模型在教育场景中的应用价值,还将为人工智能在更广泛领域的可持续发展奠定坚实基础。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
数据结构day1-思维导图顺序表
STM32超声波红外避障小车项目通过STM32微控制器实现自动避障功能。硬件部分主要包括STM32开发板、超声波传感器、红外传感器、直流电机、电池模块和电机驱动模块。超声波传感器用于测量前方障碍物的距离,红外传感器帮助小车检测地面线路或障碍物。电机驱动模块通过STM32控制直流电机的转动,从而实现小车的前进、后退和转向。 在软件方面,STM32通过编写简单的避障算法,实时读取传感器数据,并根据环境信息控制小车的运动。当超声波传感器检测到障碍物时,系统会触发后退或转向操作,避免碰撞。
哈尔滨工业大学DeepSeek公开课-从图灵测试到DeepSeek.pdf
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
app开发
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
Screenshot_2025-03-31-19-36-01-657_com.UCMobile.jpg
半导体过程控制篇 集成电路的可靠性仿真_03_31_153111.docx
社交应用_鸿蒙OS_API12_高仿微信APP_开发示例_1742847098.zip
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
app开发
2024 最新版智慧消防全流程解决方案(含 BIM+IoT 技术应用 + 典型案例分析)
电商_微信小程序_学习项目_电商功能演示_1742849441.zip
jiguang.zip
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。