Hi,
I am looking for some ideas about running isovist analyze using cesium,
Could some one gives me some hints and start points?
here is some information about it
Hi,
I am looking for some ideas about running isovist analyze using cesium,
Could some one gives me some hints and start points?
here is some information about it
I think the easiest way could be loop around 360 degree and then find the nearest object in each direction and draw a boundry…Again for make a 3d shape we must loop around in vertical to form a geometry,
But it seems too heavy process…IS there any simpler way?
well,
Here I’ll write as I go forward in case that may be usefull and also new ideas are welcome, I am some how noob
I found the Ray which seems is exactly what I need,
https://cesiumjs.org/Cesium/Build/Documentation/Ray.html
I should now loop 360,180 for a point,
Does any one has any suggestion in case of improvement of preformance ?
Well,I go forward and get to this code
var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
handler.setInputAction(function(click) {
// var pickedObject = scene.pick(click.position);
// addToMessage('target', pickedObject.id.id);
var position = viewer.camera.pickEllipsoid(click.position);
var cartographicPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(position);
var y=Cesium.Math.toDegrees(cartographicPosition.latitude);
var x=Cesium.Math.toDegrees(cartographicPosition.longitude);
var radius=100;
var segmants=10;
var origin= new Cesium.Cartesian3(x, y, 0);
var shape = [];
for (i = 0; i < segmants; i++) {
var teta=segmants*i;
var a =x+Math.cos(teta)*radius;
var b =y+Math.sin(teta)*radius;
var direction= new Cesium.Cartesian3(a, b, 0);
var ray=new Cesium.Ray(origin, direction);
var intersection = Cesium.IntersectionTests.rayEllipsoid(ray, bluePolygon);
var point = Cesium.Ray.getPoint(ray, intersection.start);
alert(point.toString());
shape.push(point.x);
alert(point.x.toString());
shape.push(point.y);
}
// shape.push(shape[0]);
// shape.push(shape[1]);
var resultPolygon = viewer.entities.add({
name : 'result',
polygon : {
hierarchy : Cesium.Cartesian3.fromDegreesArray(shape),
material : Cesium.Color.YELLOW
}
});
viewer.zoomTo(resultPolygon.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
``
It seems to work but does not work…Can some one gives me some hints about it?
Intersection part does not work
well…finally I managed to do it…
here is its video,
https://plus.google.com/+MajidHojati/posts/MGcyct9fEVr
but I think cesium liberary lakes in intersection part…