- Timestamp:
- Nov 24, 2017, 10:11:54 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/Common/UGeometry.pas
r171 r172 6 6 7 7 uses 8 Classes, SysUtils, Math , typinfo;8 Classes, SysUtils, Math; 9 9 10 10 type … … 51 51 function Center: T; 52 52 procedure SetEmpty; 53 procedure Normalize; 53 54 class operator Equal(const A, B: TGRect<T>): Boolean; 54 55 constructor Create(const P1, P2: T); … … 201 202 Self.Points[0] := Rect.P1; 202 203 Self.Points[1] := T.Create(Rect.P2.X, Rect.P1.Y); 203 Self.Points[2] := Rect.P 1;204 Self.Points[2] := Rect.P2; 204 205 Self.Points[3] := T.Create(Rect.P1.X, Rect.P2.Y); 205 206 end; … … 320 321 function TGLine<T>.ToRect: TGRect<T>; 321 322 begin 322 Result.P1 := P1; 323 Result.P2 := P2; 323 Result := TGRect<T>.Create(P1, P2); 324 324 end; 325 325 … … 461 461 end; 462 462 463 procedure TGRect<T>.Normalize; 464 var 465 NewP1: T; 466 NewP2: T; 467 begin 468 NewP1 := P1.Min(P1, P2); 469 NewP2 := P1.Max(P1, P2); 470 P1 := NewP1; 471 P2 := NewP2; 472 end; 473 463 474 function TGRect<T>.Center: T; 464 475 begin … … 481 492 Self.P1 := P1; 482 493 Self.P2 := P2; 494 Normalize; 483 495 end; 484 496 -
trunk/UMap.pas
r171 r172 239 239 { TVoronoiMap } 240 240 241 function CompareDistance(C1, C2: Pointer): Integer; 242 begin 243 if TCellsDistance(C1).Distance > TCellsDistance(C2).Distance then Result := 1 244 else if TCellsDistance(C1).Distance < TCellsDistance(C2).Distance then Result := -1 245 else Result := 0; 246 end; 247 248 function CompareDistanceReverse(const C1, C2: TCellsDistance): Integer; 249 begin 250 if C1.Distance > C2.Distance then Result := -1 251 else if C1.Distance < C2.Distance then Result := 1 241 function CompareDistance(const C1, C2: TCellsDistance): Integer; 242 begin 243 if C1.Distance > C2.Distance then Result := 1 244 else if C1.Distance < C2.Distance then Result := -1 252 245 else Result := 0; 253 246 end; … … 321 314 CellsDistance.Add(NewCellDist); 322 315 end; 323 CellsDistance.Sort(CompareDistance Reverse);316 CellsDistance.Sort(CompareDistance); 324 317 325 318 // Keep shortest non-intersected cell pairs 326 319 SelectedCells := TFPGObjectList<TCellsDistance>.Create; 327 320 SelectedCells.FreeObjects := False; 328 I := CellsDistance.Count - 1;329 while I >= 0do begin321 I := 0; 322 while I < CellsDistance.Count do begin 330 323 Intersected := False; 331 324 for J := 0 to SelectedCells.Count - 1 do … … 347 340 end; 348 341 if not Intersected then SelectedCells.Add(CellsDistance[I]); 349 Dec(I);342 Inc(I); 350 343 end; 351 344
Note:
See TracChangeset
for help on using the changeset viewer.