मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसके लिए अंतिम उपयोगकर्ताओं को ब्राउज़र में svg-edit की तरह आकर्षित करने की आवश्यकता है और प्रोसेसिंग के लिए सर्वर पर एसवीजी डेटा भेजना आवश्यक है।राफेल जेएस कुशलतापूर्वक एक "पेंसिल" उपकरण को कार्यान्वित करना
मैंने Raphael ढांचे के साथ खेलना शुरू कर दिया है और यह आशाजनक प्रतीत होता है।
वर्तमान में मैं एक पेंसिल या फ्रीलाइन प्रकार उपकरण को लागू करने की कोशिश कर रहा हूं। असल में मैं ड्राइंग क्षेत्र में माउस आंदोलन के प्रतिशत के आधार पर एक नया रास्ता खींच रहा हूं। हालांकि, अंत में यह निपटने के लिए बड़ी संख्या में पथ बनाने जा रहा है।
यह माउस आंदोलन परिवर्तित करके एक एसवीजी पथ वक्र उपयोग करने के लिए छोटा है और इसके बजाय लाइन की लाइन पथ क्षेत्रों के लिए संभव है?
नीचे मसौदा कोड मैं मार पड़ी है काम करने के लिए है ...
// Drawing area size const
var SVG_WIDTH = 620;
var SVG_HEIGHT = 420;
// Compute movement required for new line
var xMove = Math.round(SVG_WIDTH * .01);
var yMove = Math.round(SVG_HEIGHT * .01);
// Min must be 1
var X_MOVE = xMove ? xMove : 1;
var Y_MOVE = yMove ? yMove : 1;
// Coords
var start, end, coords = null;
var paperOffset = null;
var mouseDown = false;
// Get drawing area coords
function toDrawCoords(coords) {
return {
x: coords.clientX - paperOffset.left,
y: coords.clientY - paperOffset.top
};
}
$(document).ready(function() {
// Get area offset
paperOffset = $("#paper").offset();
paperOffset.left = Math.round(paperOffset.left);
paperOffset.top = Math.round(paperOffset.top);
// Init area
var paper = Raphael("paper", 620, 420);
// Create draw area
var drawArea = paper.rect(0, 0, 619, 419, 10)
drawArea.attr({fill: "#666"});
// EVENTS
drawArea.mousedown(function (event) {
mouseDown = true;
start = toDrawCoords(event);
$("#startCoords").text("Start coords: " + $.dump(start));
});
drawArea.mouseup(function (event) {
mouseDown = false;
end = toDrawCoords(event);
$("#endCoords").text("End coords: " + $.dump(end));
buildJSON(paper);
});
drawArea.mousemove(function (event) {
coords = toDrawCoords(event);
$("#paperCoords").text("Paper coords: " + $.dump(coords));
// if down and we've at least moved min percentage requirments
if (mouseDown) {
var xMovement = Math.abs(start.x - coords.x);
var yMovement = Math.abs(start.y - coords.y);
if (xMovement > X_MOVE || yMovement > Y_MOVE) {
paper.path("M{0} {1}L{2} {3}", start.x, start.y, coords.x, coords.y);
start = coords;
}
}
});
});
यह दिलचस्प लग रहा है। मुझे कल्पना है कि यह मेरे वक्र को और अधिक खंडित दिखने देगा। –
एल्गोरिदम में एक ट्यून करने योग्य त्रुटि मान है जिसका उपयोग आप यह तय करने के लिए कर सकते हैं कि आप परिणामी रेखा को मूल रेखा के समान कैसे बदलना चाहते हैं। एल्गोरिदम कैसे काम करता है यह स्पष्ट करने के लिए पाठ्यक्रम का विकिपीडिया लेख अपने आरेखों में थोड़ा सा अतिरंजित करता है। असल में जब भी आप लाइन में अंक की संख्या को कम करते हैं तो आप लाइन को "सेगमेंट" बनाते हैं।बस गति को बेहतर बनाने के लिए गेम कम पॉलीगॉन 3 डी ऑब्जेक्ट्स का उपयोग कैसे करते हैं। यहां एक ही सिद्धांत है लेकिन 2 डी में। – slebetman