@eturnity/eturnity_maths 7.16.0-qa-dev03.1 → 7.16.0-qa-dev03.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/geometry.js +39 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_maths",
3
- "version": "7.16.0-qa-dev03.1",
3
+ "version": "7.16.0-qa-dev03.2",
4
4
  "author": "Eturnity Team",
5
5
  "main": "src/index.js",
6
6
  "private": false,
package/src/geometry.js CHANGED
@@ -987,7 +987,12 @@ export function getIndexesOfBiggestTriangleWithFixedIndexes(points,fixedIndexes,
987
987
  if(numberOfPreferedOrFixedIndexes > maxNumberOfPreferedOrFixedIndexes){
988
988
  maxArea = -1
989
989
  }
990
- const area = triangleArea(points[i], points[j], points[k])
990
+ let area = triangleArea(points[i], points[j], points[k])
991
+ const selectedIndexes = preferedAndFixedIndexes.filter(i=>points[i].selected)
992
+ //give advantages to connected area
993
+ if(areConsecutiveIndexes(i,j,k,points.length) && isMiddleIndexPartOf(i,j,k,selectedIndexes)){
994
+ area=area*1.2
995
+ }
991
996
  if (area >= maxArea) {
992
997
  maxArea = area
993
998
  maxNumberOfPreferedOrFixedIndexes = numberOfPreferedOrFixedIndexes
@@ -1021,7 +1026,13 @@ export function getIndexesOfBiggestTriangleWithTwoFixedIndexes(points,fixedIndex
1021
1026
  if(numberOfPreferedOrFixedIndexes > maxNumberOfPreferedOrFixedIndexes){
1022
1027
  maxArea = -1
1023
1028
  }
1024
- const area = triangleArea(points[i], points[j], points[k])
1029
+ let area = triangleArea(points[i], points[j], points[k])
1030
+
1031
+ //give advantages to connected area
1032
+ const selectedIndexes = preferedAndFixedIndexes.filter(i=>points[i].selected)
1033
+ if(areConsecutiveIndexes(i,j,k,points.length) && isMiddleIndexPartOf(i,j,k,selectedIndexes)){
1034
+ area=area*1.2
1035
+ }
1025
1036
  if (area > maxArea) {
1026
1037
  maxArea = area
1027
1038
  maxNumberOfPreferedOrFixedIndexes = numberOfPreferedOrFixedIndexes
@@ -1036,4 +1047,29 @@ export function getIndexesOfBiggestTriangleWithTwoFixedIndexes(points,fixedIndex
1036
1047
  }
1037
1048
  return maxTriangle
1038
1049
  }
1039
-
1050
+ function isMiddleIndexPartOf(i,j,k,indexes){
1051
+ let midIndex=j
1052
+ if(i==0 && j!=1){
1053
+ midIndex = k
1054
+ }else if(i==0 && j==1 && k!=2){
1055
+ midIndex = i
1056
+ }
1057
+ return indexes.includes(midIndex)
1058
+ }
1059
+ function areConsecutiveIndexes(index1, index2, index3, totalVertices) {
1060
+ // Sort the indexes
1061
+ const sortedIndexes = [index1, index2, index3].sort()
1062
+
1063
+ // Check if the indexes form a continuous sequence
1064
+ if (sortedIndexes[2] - sortedIndexes[0] === 2) {
1065
+ return true // If consecutive
1066
+ }
1067
+
1068
+ // Special case: If the sorted indexes wrap around from the last vertex to the first
1069
+ if ((sortedIndexes[0] === 0 && sortedIndexes[1] === totalVertices - 2 && sortedIndexes[2] === totalVertices - 1) ||
1070
+ (sortedIndexes[0] === 0 && sortedIndexes[1] === 1 && sortedIndexes[2] === totalVertices - 1)) {
1071
+ return true
1072
+ }
1073
+
1074
+ return false // If not consecutive
1075
+ }