回答
<line>
標籤只支持開始和結束屬性(x1
,y1
,x2
,y2
)。因此,您需要手動在畫布外選擇x座標,並使用y2
= y1
+ m(x2
- x1
)。通過規範
編輯
來看,它可能改變單個元素的要求:
<line ... transform="translate(x, y) rotate(theta)" />
哪裏theta
爲順時針方向旋轉的角的度數。
所以,你可以畫出從長水平線(-10000,0)到(10000,0),再說了,然後應用相應的旋轉和平移將它定位:
<line x1="-10000" y1="0" x2="10000" y2="0" transform="translate(150, 200) rotate(-30)" />
將以此爲(看似無止盡的)通過(150,200)斜率π/ 6弧度。
是的,這就是我正在做的。但svg支持浮點座標? –
@MeghParikh是的。 – Phylogenesis
@MeghParikh根據文檔[此處](http://www.w3.org/TR/SVG11/types.html#InterfaceSVGLength)。 – Phylogenesis
SVG是展示幾何圖形的好方法。但是,您必須知道一些Javascript來構建動態顯示。
下面是一個示例,您可以將其複製到HTML文件並在瀏覽器中查看它。 它顯示從兩點繪製一條線,然後使用等式y=mx+c
將其延伸到可視svg可視區域(400x400)的末端。請注意,svg中的y軸開始於左上角,其中y座標將向下作爲正向。
繪製線條並將其擴展使用一點javascript。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Draw Line y=mx+b</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body style='padding:10px;font-family:arial'>
<center>
<h4>Draw Line y=mx+b</h4>
Red line is original points. Dashed extends to start(0)/end(400) of x axis
<div id="svgDiv" style='background-color:lightgreen;width:400px;height:400px;'>
<svg id="mySVG" width="400" height="400">
<line id="myLine2" stroke="black" stroke-width="3" stroke-dasharray="10 10" />
<line id="myLine1" stroke="red" stroke-width="5" />
</svg>
</div>
<br />SVG Source:<br />
<textarea id=svgSourceValue style='font-size:110%;font-family:lucida console;width:90%;height:200px'></textarea>
<br />Javascript:<br />
<textarea id=jsValue style='border-radius:26px;font-size:110%;font-weight:bold;color:midnightblue;padding:16px;background-color:beige;border-width:0px;font-size:100%;font-family:lucida console;width:90%;height:400px'></textarea>
</center>
<div id='browserDiv' style='padding:5px;position:absolute;top:5px;left:5px;background-color:gainsboro;'>OK in:IE11/CH32/FF23<br /></div>
<script id=myScript>
function DrawLineToAxis()
{
var x1=120
var y1=150
var x2=360
var y2=290
var m=(y2-y1)/(x2-x1)
myLine1.setAttribute("x1",x1)
myLine1.setAttribute("y1",y1)
myLine1.setAttribute("x2",x2)
myLine1.setAttribute("y2",y2)
/*
y=m*x-m*120+150
*/
//---extend to x=0 x=400
x1=0
y1=-m*120+150
x2=400
y2=m*x2-m*120+150
myLine2.setAttribute("x1",x1)
myLine2.setAttribute("y1",y1)
myLine2.setAttribute("x2",x2)
myLine2.setAttribute("y2",y2)
}
</script>
<script>
document.addEventListener("onload",init(),false)
function init()
{
DrawLineToAxis()
svgSourceValue.value=svgDiv.innerHTML
jsValue.value=myScript.text
}
</script>
</body>
</html>
以下是我的代碼:
function linemc(m,c){
var x,y,xm=[],ym=[];
x=-1;y=m*x+c;if(y>=0&&y<ysize) {xm.push(x);ym.push(y);}
x=xsize+1;y=m*x+c;if(y>=0&&y<ysize) {xm.push(x);ym.push(y);}
y=-1;x=(y-c)/m;if(x>=0&&x<xsize+1) {xm.push(x);ym.push(y);}
y=ysize+1;x=(y-c)/m;if(x>=0&&x<xsize+1) {xm.push(x);ym.push(y);}
return new line(xm[0],ym[0],xm[1],ym[1]);
}
,其中新線剛剛通過接受四個參數
和XSIZE和YSIZE創建行DOM節點是畫布的大小
- 1. 在C++中使用y = mx + b公式的運動圓
- 2. 試圖在y = mx + b中編程y,但不工作?
- 3. 如何使用公式繪製一條直線:y = mx + c in java
- 4. SVG圖像格式
- 5. 格式化y軸
- 6. PHP:從Y型F-d格式Y-M-d格式
- 7. Flex/mx spark:創建一個numpad佈局(表格樣式)
- 8. SVG - 完成標誌模式中各行之間的空格
- 9. 如何將SVG轉換爲jVectorMap格式
- 10. 以HTML格式顯示SVG
- 11. 格式y軸顏色條
- 12. 格式Y軸蜱jqplot /值
- 13. SVG viewBox反轉Y座標
- 14. 如何在java中使用y = mx + b繪製一條線?
- 15. 用C#瞭解MX記錄
- 16. 柵格格式異常(Y +高度)
- 17. 如何將SVG導出爲PNG格式
- 18. Mx網格 - 非常奇怪的佈局
- 19. c#格式行到列
- 20. PDF格式的SVG + HTML(javascript或php)
- 21. y軸的iOS CorePlot數字格式化
- 22. .Net DataVisualization.Charting Y軸上的格式化值
- 23. 陰謀地改變y軸的格式
- 24. 是什麼Informix的`%iY`和`%Y`格式
- 25. 如何格式化Y軸的文本
- 26. iPhone CorePlot y軸的正確格式化
- 27. 將日期格式化爲格式「%Y-%m」的問題
- 28. Firefox中的SVG網格(模式)行爲不檢測
- 29. 一旦我使用Excel中的迴歸函數,如何找出它使用的式(表達式y = mx + b)的
- 30. 爲什麼只有當我使用'x,y = y,x + y格式而不是'x = y; y = x + y'?
待辦事項你已經繪製了軸並且想要覆蓋這個軸,或者你想繪製一個完整的圖?一行y = mx + c(特別是c部分)本身並不意味着太多。 – Phylogenesis
我的座標系是默認的svg,因爲我不是處理圖形,而是使用純歐幾里德幾何。所以這是一個輔助函數,用於繪製穿過給定點的線,並以θ角傾斜到另一條線。我也希望線條的長度是無限的(至少是適合的帆布)。 –
它也被用來找出兩個圓的交點,首先找出根軸。 –