私は、キャンバス内に複数のオブジェクトを表示し、HTML5キャンバスを作成するoCanvas JSライブラリ(http://ocanvas.org/)を使用してこのスクリプトを作成しています。現在、私は外部XMLドキュメントからスクリプトを読み込み、各プロジェクトノードをループし、キャンバス上に円オブジェクトを作成します。HTML5 Canvas:衝突検出の問題
このオブジェクトを中間円から均等に間隔を置いてキャンバスに配置しようとする際に問題が発生しています(下のコードのロゴ変数)。あなたが円のためにパラメトリック方程式であるを見てみたい何
// GLOBALS
var xmlData = '<?xml version="1.0" encoding="UTF-8"?><root name="CompanyName"><projects><project name="Project1"></project><project name="Project2"></project></projects></root>'
var xmlObj = []
// var angle = (360 * Math.PI)/180
var padding = 15
var canvas = oCanvas.create({
canvas: '#myCanvas'
})
var c_width = canvas.width
var c_height = canvas.height
var logo = canvas.display.ellipse({
x: c_width/2,
y: c_height/3,
radius: 80,
fill: '#d15851'
})
canvas.addChild(logo)
// var getXML = function(file){
// $.ajax({
// url: file,
// type: 'GET',
// dataType: 'xml',
// async: false,
// success: parseXML
// })
// }
var parseXML = function() {
var xmlDoc = $.parseXML(xmlData)
var xml = $(xmlDoc)
xml.find('project').each(function(i){
xmlObj[i] = canvas.display.ellipse({
fill: '#'+'abcdef'.split('').map(function(v,i,a){
return i>5 ? null : a[Math.floor(Math.random()*16)] }).join(''),
radius: 40,
opacity: 1
})
});
var angleSingleton = {
"currentAngle": 0,
"currentOffset": 0,
"incrementAngle": function() {
this.currentAngle = this.currentAngle + this.currentOffset
}
}
angleSingleton.currentOffset = Math.floor((360 * Math.PI)/xmlObj.length);
for(h = 0; h < xmlObj.length; h++) {
xmlObj[h].x = (logo.x + logo.radius * Math.cos(angleSingleton.currentAngle)) + xmlObj[h].radius + padding;
xmlObj[h].y = (logo.y + logo.radius * Math.sin(angleSingleton.currentAngle)) + xmlObj[h].radius + padding;
canvas.addChild(xmlObj[h])
angleSingleton.incrementAngle()
}
}
//
$(document).ready(function(){
parseXML()
})
と提供:
ところで、私は、これはファイルをJS研究することによって、私の衝突アルゴリズムを記述することができましたいくつかのサンプルデータ? –
はい、私は今サンプルXMLを含んでいます...私はキャンバスの真ん中にセンタリングされたサークルを持っています...他のサークルのプロットポイント(x/y座標)を取得しています...今は互いに重なり合います。 – dennismonsewicz
メインサークルの周りの円のポイントを取得する方法をお考えですか? –