Hello again @Omar and sorry if I necropost this.

I was working on it, and ad some progress like the following Sandcastle

I used a different approach since The data I have is a bit different, but there is something I am missing.

var getEdges = function (area){

var origin = new Cesium.Cartesian2(area.ll.longitude, area.ll.latitude);

var xAxis = new Cesium.Cartesian2(area.dir.longitude - area.ll.longitude, area.dir.latitude - area.ll.latitude);

var yAxis = new Cesium.Cartesian2(

Math.cos(Math.PI /2) * xAxis.x - Math.sin(Math.PI /2) * xAxis.y,

Math.sin(Math.PI /2) * xAxis.x + Math.cos(Math.PI /2) * xAxis.y

);

```
var originPoint = new Cesium.Cartesian3.fromDegrees(origin.x, origin.y, 0);
var xVector = new Cesium.Cartesian3.fromDegrees(origin.x + xAxis.x, origin.y + xAxis.y, 0);
var yVector = new Cesium.Cartesian3.fromDegrees(origin.x + yAxis.x, origin.y + yAxis.y, 0);
var lrDir = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(xVector, originPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());
var lrSum = Cesium.Cartesian3.multiplyByScalar(lrDir, area.lllr, new Cesium.Cartesian3());
var lowerRight = Cesium.Cartesian3.add(originPoint, lrSum, new Cesium.Cartesian3());
var ulDir = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(yVector, originPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());
var ulSum = Cesium.Cartesian3.multiplyByScalar(ulDir, area.llul, new Cesium.Cartesian3());
var upperLeft = Cesium.Cartesian3.add(originPoint, ulSum, new Cesium.Cartesian3());
var upperRight = Cesium.Cartesian3.add(originPoint, lrSum, new Cesium.Cartesian3());
Cesium.Cartesian3.add(upperRight, ulSum, upperRight);
return [originPoint, lowerRight, upperRight, upperLeft];
```

};

``

In this function, if I take my Cartesian2 points, they are correct, they are correct (origin, xAxis and yAxis) are forming a 90degree angle

but when I switch to a Cartesian3, they are not doing 90degree, but slightly less>

Do you know where the problem might come from ?