# Fehlermeldung Cannot read property 'x' of undefined



## Klinger (4. Mai 2019)

Hallo liebes Forum,
vielleicht könnt Ihr mir helfen, den Fehler zu finden, den ich in diesen Zeilen vermute:

```
function scanlineFillPolygon(vertices, polygon, color, textureCoord, polygonTextureCoord, texture) {
        var horizontalClippingTest;
        var zTest;
        assembleIntersectionForScanline(vertices, polygon, color, textureCoord, polygonTextureCoord, texture);
        var shadingFunction = shader.getShadingFunction();
        interpolationData.shaderPrepareScanline = shader.getInterpolationPrepareScanlineFunction();
        interpolationData.shaderStepOnScanline = shader.getInterpolationStepOnScanlineFunction();
        scanlineIntersection.forEach(function (line, y, arr) {
            line.sort(function (a, b) {
                return a - b;
                return a.x - b.x;
            });
            for (var intersect = 0, len = line.length; intersect < len; intersect += 2) {
                var startIntersection = line[intersect];
                var endIntersection = line[intersect + 1];
                for (var x = startIntersection.x; x <= endIntersection.x; x++) {
                    framebuffer.set(x, y, 0, color);
                }
                interpolationStepOnScanline(texture);
            }
        }
        );
    }
}
```

Die Fehlermeldung lautet Uncaught TypeError: Cannot read property 'x' of undefined und tritt in der Zeile 
	
	
	
	





```
for (var x = startIntersection.x; x <= endIntersection.x; x++) {
```
auf.


----------



## httpdigest (4. Mai 2019)

Falsches Subforum. Das ist Javascript und nicht Java. Die Ähnlichkeiten beider Sprachen sind vergleichbar mit den Ähnlichkeiten von Car und Carpenter.
Falls es im Browser läuft (und nicht in Node): Debug das doch einfach mit den F12-Tools des jeweiligen Browsers.
Der Grund ist, dass der Wert in `line[intersect]` undefined ist. Einfach Breakpoint setzen und schauen, was die ganzen Variablen für Werte haben.


----------



## mihe7 (4. Mai 2019)

Klinger hat gesagt.:


> line.sort(function (a, b) { return a - b; return a.x - b.x; });


Die zwei returns sind ja wohl auch etwas sinnfrei, oder?



Klinger hat gesagt.:


> for (var intersect = 0, len = line.length; intersect < len; intersect += 2)


Wenn Du in der Schleife auf line[intersect+1] zugreifen willst, dann muss die Abbruchbedingung intersect+1 < len lauten.


----------



## Klinger (4. Mai 2019)

Mann. Es kann so einfach sein. "+ 1" war anscheinend das Problem.
Vielen Dank!


----------

