建设通网站是做什么的出售已备案的域名合法吗
建设通网站是做什么的,出售已备案的域名合法吗,2019年 dede网站,小程序商城使用教程欢迎大家加入开源鸿蒙跨平台社区
Flutter 向量匹配 Demo 实现指南
本文介绍在 Flutter#xff08;鸿蒙跨平台#xff09;项目中实现 2D 向量可视化与匹配 Demo 的核心要点#xff0c;涵盖向量数据模型、画布绘制、运算展示、余弦相似度匹配四个部分。 一、向量数据模型
封…欢迎大家加入开源鸿蒙跨平台社区Flutter 向量匹配 Demo 实现指南本文介绍在 Flutter鸿蒙跨平台项目中实现 2D 向量可视化与匹配 Demo 的核心要点涵盖向量数据模型、画布绘制、运算展示、余弦相似度匹配四个部分。一、向量数据模型封装Vec2类支持加减、点积、余弦相似度等常用运算classVec2{finaldouble x;finaldouble y;doublegetlengthsqrt(x*xy*y);Vec2operator(Vec2o)Vec2(xo.x,yo.y);Vec2operator-(Vec2o)Vec2(x-o.x,y-o.y);doubledot(Vec2o)x*o.xy*o.y;doublecosine(Vec2o){finaldenomlength*o.length;if(denom0)return0;return(dot(o)/denom).clamp(-1.0,1.0);}}二、整体结构使用IndexedStackNavigationBar实现三 Tab 页面状态共享两个可编辑向量body:IndexedStack(index:_tabIndex,children:[_CanvasTab(vecA:_vecA,vecB:_vecB,onSetA:_setA,onSetB:_setB),_OpsTab(vecA:_vecA,vecB:_vecB),_MatchTab(vecA:_vecA,vecB:_vecB),],),三、画布绘制CustomPainter坐标系转换画布中心为原点1 单位 30pxY 轴方向取反Offset_toCanvas(Vec2v,Sizesize){finalcxsize.width/2;finalcysize.height/2;returnOffset(cxv.x*scale,cy-v.y*scale);// Y 轴翻转}Vec2_toVec(Offseto,Sizesize){returnVec2((o.dx-cx)/scale,(cy-o.dy)/scale);}拖拽端点通过命中检测判断拖拽的是向量 A 还是 B更新父组件状态onPanStart:(d){_dragging_hitTest(d.localPosition,size);// A | B | null},onPanUpdate:(d){finalv_toVec(d.localPosition,size);if(_draggingA)widget.onSetA(v);elsewidget.onSetB(v);},箭头绘制使用三角函数计算箭头两侧端点void_drawArrow(Canvascanvas,Offsetfrom,Offsetto,Colorcolor){finaldir(to-from)/(to-from).distance;constarrowLen12.0;constarrowAngle0.4;finalp1to-Offset(dir.dx*arrowLen*cos(arrowAngle)-dir.dy*arrowLen*sin(arrowAngle),dir.dy*arrowLen*cos(arrowAngle)dir.dx*arrowLen*sin(arrowAngle),);// ... 对称计算 p2}虚线合向量手动循环绘制线段实现虚线效果double d0;bool drawtrue;while(dtotal){finalstepdraw?8.0:4.0;// 8px 实线4px 间隔if(draw)canvas.drawLine(origindir*d,origindir*min(dstep,total),paint);dstep;draw!draw;}四、向量运算 Tab实时计算并展示所有向量运算结果核心计算finalsumvecAvecB;// 合向量finaldiffvecA-vecB;// 差向量finaldotvecA.dot(vecB);// 点积finalcosValvecA.cosine(vecB);// 余弦相似度finalangleDegacos(cosVal)*180/pi;// 夹角度五、余弦相似度匹配 Tab相似度仪表盘将 [-1, 1] 映射到进度条 [0, 1]并根据阈值显示语义标签finalpct((cosVal1)/2).clamp(0.0,1.0);Stringget_label{if(cosVal0.9)return高度相似;if(cosVal0.6)return较为相似;if(cosVal0.2)return弱相似;if(cosVal-0.2)return近似正交;return反向;}向量库排名将向量 A 与预设 6 个方向向量逐一计算余弦相似度按分数降序排列finalscoredlibrary.map((lv)_ScoredVec(lv,vecA.cosine(lv.vec))).toList()..sort((a,b)b.score.compareTo(a.score));总结模块核心技术数据模型Vec2封装向量运算画布绘制CustomPainter 坐标系转换拖拽交互GestureDetector.onPan* 命中检测余弦相似度dot / (匹配排名List.sortLinearProgressIndicator