计算两个弧内点(圆环段)的最简单方法

时间:2015-07-08 00:27:12

标签: math svg

我需要一个通用的解决方案。这是一个具体的例子。我有一个由place.address

定义的SVG路径

或使用$(function() { var places = []; $('ul.property-list li').each(function(n) { var street = $('ul.property-list li .property-text .street').text(); var city = $('ul.property-list li .property-text .city').text(); places.push({ price: $('ul.property-list li .price').text(), image: $('ul.property-list li .property-image IMG').attr('src'), address: street + ',' + city }); }); // Google Maps API var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); $.each( places, function( n, place ) { if (n >= 10) return false; // done geocoder.geocode({ 'address': place.address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); var infocontent = '<div style="width:250px;overflow:hidden;">' + '<img style="float:left;width:100px;margin-right:8px;" src="' + place.image + '" />' + '<div><div style="font-weight:700;font-size:20px;padding-bottom:5px;">$' + place.price.toLocaleString() + '</div>' + place.address + '</div></div>'; var infowindow = new google.maps.InfoWindow({ content: infocontent }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map, marker); }); } if (n == 0) { map.setCenter(results[0].geometry.location); } }); }); map = new google.maps.Map(document.getElementById('map2'), mapOptions); var mapOptions = { zoom: 14, } } initialize(); });

d="M239.9,254.0A113.7,113.7,0,0,0,322.5,289.7L322.4,341.9A166,166,0,0,1,201.8,289.9Z"

是内弧的终点,由于r1 = r2 = 113.7,它是一个圆。由于其larc = 0,两点之间的角度小于180度。扫描= 0表示逆时针绘制弧。

M x0 y0 A r1 r2 0 larc sweep x1 y1 L x2 y2 A r3 r4 0 larc sweep x3 y3

是外弧的终点,因为r3 = r4 = 166,它也是一个圆。由于其larc = 0,两点之间的角度小于180度。扫描= 1表示顺时针绘制弧。

我可以计算两个端点的中点,例如 x0=239.9 y0=254.0 x1=322.5 y1=289.7 但是任何舍入错误都可能将该点放在甜甜圈细分之外。

我知道如何计算每个弧的中点,我可以计算两个弧中点之间的中点,但这是很多方程。有更简单的方法吗?我只需要在甜甜圈内点一点。请记住,larc(大弧)可能= 1,因此角度可能大于180。

0 个答案:

没有答案