| 
		
			Сообщение от grego
			
		
	 | 
	| 
		Ожидается, что на выходе получается массив из объектов,
	 | 
	
А в итоге у тебя получается массив из 10 ссылок на один и тот же объект.
У тебя ведь объект relation один? Один!
Создавай на каждой итерации новый объект. Например так:
var i = 0,
        length = 10,
        relations = [];
 
        for(; i< length; i++) {
            relations.push({
                startPoint: {
                    x:i,
                    y:i
                },
                endPoint: {
                    x:i,
                    y:i
                }
            });
        }
 
        console.log(relations);
Или напиши функцию clone() (или copy()), которая будет создавать копию объекта.
Можешь еще так сделать (в традиционном стиле для ооп):
function Relation(startX, startY, endX, endY) {
    this.startPoint = {
        x: startX,
        y: startY
    };
    this.endPoint = {
        x: endX,
        y: endY
    };
}
var i = 0,
    length = 10,
    relations = [];
for(; i< length; i++) {
    relations.push(new Relation(i, i, i, i));
}
console.log(relations);