Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add Point2D library by joseviccruz · Pull Request #6 · robocin/robocin-cpp · GitHub
Skip to content
This repository was archived by the owner on Feb 22, 2024. It is now read-only.

Add Point2D library - #6

Open
joseviccruz wants to merge 6 commits into
mainfrom
point2d
Open

Add Point2D library#6
joseviccruz wants to merge 6 commits into
mainfrom
point2d

Conversation

@joseviccruz

Copy link
Copy Markdown
Contributor

This pull request introduces the Point2D library, providing a versatile and efficient implementation of a 2D point structure. The Point2D library offers various mathematical operations and geometric functions that can be utilized in a wide range of applications.

@joseviccruzjoseviccruz added the enhancement New feature or request label Jun 15, 2023
@joseviccruzjoseviccruz self-assigned this Jun 15, 2023
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +90 to +91
- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dot and cross are common vectors operations. Some operations are specific for vector or point interpretation, hardly for both.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should I change here in the description only? Or implement Point / Vector separately?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just description I think.

Comment threadrobocin/geometry/README.md Outdated
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.
- `value_type lengthSquared() const`: Computes the square of the Euclidean length of the current point.
- `auto length() const`: Computes the Euclidean length of the current point.
- `auto norm() const`: Computes the Euclidean length of the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A point doesn't have length.

Comment threadrobocin/geometry/README.md Outdated

- `value_type dot(const Point2D& other) const`: Computes the dot product of the current point and another point.
- `value_type cross(const Point2D& other) const`: Computes the cross product of the current point and another point.
- `value_type manhattanLength() const`: Computes the Manhattan distance between the origin and the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This a example of point only operation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont like that. So for manhattan that commonly a binary function, I have to do:
(b-a).manhattanLength()
Instead of:
a.manhattanDistance(b)?
I think that manhattan is more related to distance than length.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well observed! Again, this was partly inspired by QPointF::manhattanLength.

Perhaps keeping both is reasonable?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Comment threadrobocin/geometry/README.md Outdated
Comment threadrobocin/geometry/README.md Outdated
Comment on lines +100 to +101
- `auto angle() const`: Computes the angle (in radians) between the positive x-axis and the vector from the origin to
the current point.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[-Pi , +PI]?

Comment threadrobocin/geometry/README.md Outdated

### Validators

- `bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-`bool isNull() const`: Checks if the point is null (coordinates are both zero). Returns `true`
-`bool isOrigin() const`: Checks if the point is null (coordinates are both zero). Returns `true`

discard null word for this case.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was originally inspired on QPointF::isNull, but I agree that isOrigin looks better for this purpose...

However, perhaps isNull is a common interface for other geometric representations such as QRectF, QVector3D...

wdyt?

Comment threadrobocin/geometry/README.md Outdated
Comment on lines +80 to +82
- `bool operator==(const Point2D& other) const`: Equality operator that checks if two points are equal.
- `auto operator<=>(const Point2D& other) const`: Three-way comparison operator that compares two points and returns
their relative ordering.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these operators sufficient to do sorting?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For sure! Three way comparisons are able to replace all relational comparators.

Co-authored-by: Bezaliel Silva <33490486+bcs5@users.noreply.github.com>
@joseviccruz
joseviccruz requested a review from bcs5July 31, 2023 22:04
@joseviccruz
joseviccruz marked this pull request as ready for review September 17, 2023 18:55
@joseviccruz
joseviccruz changed the base branch from fuzzy_compare to mainSeptember 17, 2023 18:55
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@joseviccruz@bcs5