Avatar billede jpi Mester
10. november 2013 - 12:21 Der er 6 kommentarer og
1 løsning

Oversætte kode fra C til VB.NET

Hej

Er der nogen der kan oversætte følgende kode for mig til VB.NET ?

På forhånd tak !

/jpi

//  Globals which should be set before calling this function:
//
//  int    polySides  =  how many corners the polygon has
//  float  polyX[]    =  horizontal coordinates of corners
//  float  polyY[]    =  vertical coordinates of corners
//  float  x, y      =  point to be tested
//
//  (Globals are used in this example for purposes of speed.  Change as
//  desired.)
//
//  The function will return YES if the point x,y is inside the polygon, or
//  NO if it is not.  If the point is exactly on the edge of the polygon,
//  then the function may return YES or NO.
//
//  Note that division by zero is avoided because the division is protected
//  by the "if" clause which surrounds it.

bool pointInPolygon() {

  int  i, j=polySides-1 ;
  bool  oddNodes=NO      ;

  for (i=0; i<polySides; i++) {
    if (polyY[i]<y && polyY[j]>=y
    ||  polyY[j]<y && polyY[i]>=y) {
      if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x) {
        oddNodes=!oddNodes; }}
    j=i; }

  return oddNodes; }
Avatar billede wjens Guru
10. november 2013 - 14:15 #1
Avatar billede arne_v Ekspert
10. november 2013 - 15:11 #2
C# og C er ikke det samme.

Men det boer vaere trivielt at konvertere den kode.
Avatar billede jpi Mester
11. november 2013 - 16:01 #3
Converteren giver dette resultat:

Ser det OK ud ?

Ja, det er C og ikke C# som udgangspunktet er...

'  Globals which should be set before calling this function:
'
'  int    polySides  =  how many corners the polygon has
'  float  polyX[]    =  horizontal coordinates of corners
'  float  polyY[]    =  vertical coordinates of corners
'  float  x, y      =  point to be tested
'
'  (Globals are used in this example for purposes of speed.  Change as
'  desired.)
'
'  The function will return YES if the point x,y is inside the polygon, or
'  NO if it is not.  If the point is exactly on the edge of the polygon,
'  then the function may return YES or NO.
'
'  Note that division by zero is avoided because the division is protected
'  by the "if" clause which surrounds it.

Private Function pointInPolygon() As Boolean

    Dim i As Integer, j As Integer = polySides - 1
    Dim oddNodes As Boolean = NO

    For i = 0 To polySides - 1
        If polyY(i) < y AndAlso polyY(j) >= y OrElse polyY(j) < y AndAlso polyY(i) >= y Then
            If polyX(i) + (y - polyY(i)) / (polyY(j) - polyY(i)) * (polyX(j) - polyX(i)) < x Then
                oddNodes = Not oddNodes
            End If
        End If
        j = i
    Next

    Return oddNodes
End Function
Avatar billede arne_v Ekspert
11. november 2013 - 16:30 #4
NO skal nok vaere False.

Og designed med de globals er meget suspekt.

Men ellers ser det meget tilforladeligt ud.
Avatar billede arne_v Ekspert
11. november 2013 - 16:30 #5
Du ved godt at du kan kalde C kode fra VB.NET?
Avatar billede jpi Mester
11. november 2013 - 18:46 #6
Ja, det med de globale skal lige ændres. Den del tror jeg nok jeg har styr på.

Men vidste ikke dem med c koden ra VB.NET
Det må jeg huske til en anden gang. Tak :)

wjens smid et svar, så du kan få point og spm lukkes
Avatar billede wjens Guru
11. november 2013 - 19:25 #7
Ok, og enig med Arne at C og C# er ret forskellige, men til den opgave kunne det nok række.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester