-
Notifications
You must be signed in to change notification settings - Fork 382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding Astronomical units #679
Comments
Hi and thanks for describing the feature. I think this sounds all very interesting and definitely something that belongs in the library. Would you be interested in doing one or more pull requests? I'm happy to assist. https://github.com/angularsen/UnitsNet#want-to-contribute |
For sure I would be interested. I will follow the link and prepare the code. I've checked how it is designed and adding what I want to the json files seem straightforward enough. |
Perfect! Look forward to it. Don't hesitate to ask if something is not clear. |
Why is Power using decimal has its base type instead of double for almost all other units I've looked at? |
It's because it has a very wide range of units from very small to very large, so the conversions would get very poor precision because they have to convert via the base unit. |
Some discussions on improving precision: |
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
-->Ok make sense. I now face a very Strange problem. I’ve Added Astronopmical Unit, Parsec and Light Years to Length.json. But when the test units are run, for Inches only, it fail because in the assert the au (Astronbomical Units) value is used. Any quick thought on what could cause that problem? Provenance : Courrier pour Windows 10 De : Andreas Gullberg LarsenEnvoyé le :17 juillet 2019 20:34À : angularsen/UnitsNetCc : Étienne Fortin; AuthorObjet :Re: [angularsen/UnitsNet] Adding Astronomical units (#679) It's because it has a very wide range of units from very small to very large, so the conversions would fail due to poor precision because they have to convert via the base unit.It's fixable, but for now there are around 3 quantities that use decimal internally as a workaround.—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
|
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1465389479;
mso-list-template-ids:-1;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->Also how can I change the precision for specific units. Provenance : Courrier pour Windows 10 De : Andreas Gullberg LarsenEnvoyé le :17 juillet 2019 20:36À : angularsen/UnitsNetCc : Étienne Fortin; AuthorObjet :Re: [angularsen/UnitsNet] Adding Astronomical units (#679) Some discussions on improving precision:#588#478—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
|
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1465389479;
mso-list-template-ids:-1;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->Sorry I meant tolerance. Provenance : Courrier pour Windows 10 De : efortin76@gmail.comEnvoyé le :17 juillet 2019 21:13À : angularsen/UnitsNet; angularsen/UnitsNetCc : AuthorObjet :RE: Re: [angularsen/UnitsNet] Adding Astronomical units (#679) Also how can I change the precision for specific units. Provenance : Courrier pour Windows 10 De : Andreas Gullberg LarsenEnvoyé le :17 juillet 2019 20:36À : angularsen/UnitsNetCc : Étienne Fortin; AuthorObjet :Re: [angularsen/UnitsNet] Adding Astronomical units (#679) Some discussions on improving precision:#588#478—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
|
Can you create a pull request so I can see what code changes you have? I don't see immediately what is wrong from your description. Tolerance can be overridden by overriding the tolerance property values in the LengthTestBase class (or something like that), and setting it to something different than |
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
-->I will create the pull Request. For the tolerance the problem is that the place where the property is defined is an auto generated class. So my change will be overriden the minute I execute generate-code.bat Provenance : Courrier pour Windows 10 De : Andreas Gullberg LarsenEnvoyé le :17 juillet 2019 21:20À : angularsen/UnitsNetCc : Étienne Fortin; AuthorObjet :Re: [angularsen/UnitsNet] Adding Astronomical units (#679) Can you create a pull request so I can see what code changes you have? I don't see immediately what is wrong from your description.Tolerance can be overridden by overriding the tolerance property values in the LengthTestBase class (or something like that), and setting it to something different than 1e-5 that I believe is the default.—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
|
Sorry, I miswrote, you should edit protected override double YourUnitTolerance => 1e-3; This property is autogenerated in Update: Forgot to specify the tolerance value. |
Update: Forgot to specify the tolerance value. |
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
pre
{mso-style-priority:99;
mso-style-link:"Pr\00E9format\00E9 HTML Car";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.PrformatHTMLCar
{mso-style-name:"Pr\00E9format\00E9 HTML Car";
mso-style-priority:99;
mso-style-link:"Pr\00E9format\00E9 HTML";
font-family:"Courier New";}
span.pl-k
{mso-style-name:pl-k;}
span.pl-smi
{mso-style-name:pl-smi;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
-->Ok will do that. Pull Request created. Provenance : Courrier pour Windows 10 De : Andreas Gullberg LarsenEnvoyé le :17 juillet 2019 21:29À : angularsen/UnitsNetCc : Étienne Fortin; AuthorObjet :Re: [angularsen/UnitsNet] Adding Astronomical units (#679) Sorry, I miswrote, you should edit LengthTests and override like this: protected override double YourUnitTolerance { get; }This property is autogenerated in LengthTestsBase.—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
|
Fixed in #680 |
Is your feature request related to a problem? Please describe.
I'm working on a planet generation software and am using astronomical units all over. Right now these units are treated all as double. Which is exactly what UnistNet is there to resolve.
Describe the solution you'd like
Astronomical units, like AU and mass ratio to solar mass, could be added to the relevant unit class like Length.
Describe alternatives you've considered
Adding custom units. However this, as indicated, is not that well designed right now and I don't want to lose link with UnitsNet future releases. Also it makes sense to support these units used in a very large field of study.
The text was updated successfully, but these errors were encountered: