Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
pluginManagement {
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.9.22'
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0'
}
rootProject.name = 'unit-api'

include 'unit-api-core'
Expand Down
10 changes: 10 additions & 0 deletions unit-api-core/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
plugins {
id 'org.jetbrains.kotlin.jvm'
}
dependencies {
implementation("org.reflections:reflections:0.10.2")
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
repositories {
mavenCentral()
}
kotlin {
jvmToolchain(17)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.raynigon.unit.api.core.quantities;

import javax.measure.Quantity;
import javax.measure.quantity.Area;
import javax.measure.quantity.LuminousIntensity;

/**
* Luminous intensity per unit area of light traveling in a given direction.
* The system unit for this quantity is "cd/m²" (candela per square meter).
*
* @author <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
* @author <a href="mailto:units@catmedia.us">Werner Keil</a>
* @version 1.3
*
* @see LuminousIntensity
* @see Area
*/
public interface Luminance extends Quantity<Luminance> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.raynigon.unit.api.core.units.si.angle;

import com.raynigon.unit.api.core.units.general.BaseUnit;
import com.raynigon.unit.api.core.units.general.UnitDimension;
import com.raynigon.unit.api.core.units.si.SISystem;

import javax.measure.quantity.Angle;
import javax.measure.quantity.SolidAngle;

public class Radian extends BaseUnit<Angle> {

public Radian() {
super(
SISystem.ID,
"rad",
"Radian",
Angle.class,
UnitDimension.NONE
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.raynigon.unit.api.core.units.si.angle;

import com.raynigon.unit.api.core.units.general.BaseUnit;
import com.raynigon.unit.api.core.units.general.UnitDimension;
import com.raynigon.unit.api.core.units.si.SISystem;

import javax.measure.quantity.SolidAngle;

public class Steradian extends BaseUnit<SolidAngle> {

public Steradian() {
super(
SISystem.ID,
"sr",
"Steradian",
SolidAngle.class,
UnitDimension.NONE
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.raynigon.unit.api.core.units.si.luminance;

import com.raynigon.unit.api.core.units.general.AlternateUnit;
import com.raynigon.unit.api.core.units.general.BaseUnit;
import com.raynigon.unit.api.core.units.general.UnitDimension;
import com.raynigon.unit.api.core.units.si.SISystem;
import com.raynigon.unit.api.core.units.si.area.SquareMetre;

import javax.measure.quantity.Illuminance;
import javax.measure.quantity.LuminousIntensity;

public class Candela extends BaseUnit<LuminousIntensity> {

public Candela() {
super(
SISystem.ID,
"cd",
"Candela",
LuminousIntensity.class,
UnitDimension.LUMINOUS_INTENSITY
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.raynigon.unit.api.core.units.si.luminance;

import com.raynigon.unit.api.core.quantities.Luminance;
import com.raynigon.unit.api.core.units.general.AlternateUnit;
import com.raynigon.unit.api.core.units.general.TransformedUnit;
import com.raynigon.unit.api.core.units.si.SISystem;
import com.raynigon.unit.api.core.units.si.area.SquareMetre;

import javax.measure.Unit;
import javax.measure.quantity.Illuminance;

public class CandelaPerSquareMetre extends AlternateUnit<Luminance> {

@SuppressWarnings("unchecked")
public CandelaPerSquareMetre() {
super(
SISystem.ID,
"lx",
"Lux",
(Unit<Luminance>) (new Candela().divide(new SquareMetre())),
Luminance.class
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.raynigon.unit.api.core.units.si.luminance;

import com.raynigon.unit.api.core.units.general.AlternateUnit;
import com.raynigon.unit.api.core.units.general.BaseUnit;
import com.raynigon.unit.api.core.units.general.UnitDimension;
import com.raynigon.unit.api.core.units.si.SISystem;
import com.raynigon.unit.api.core.units.si.angle.Steradian;

import javax.measure.Unit;
import javax.measure.quantity.Illuminance;
import javax.measure.quantity.LuminousFlux;

public class Lumen extends AlternateUnit<LuminousFlux> {

@SuppressWarnings("unchecked")
public Lumen() {
super(
SISystem.ID,
"lm",
"Lumen",
(Unit<LuminousFlux>) new Candela().multiply(new Steradian()),
LuminousFlux.class
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.raynigon.unit.api.core.units.si.luminance;

import com.raynigon.unit.api.core.units.general.AlternateUnit;
import com.raynigon.unit.api.core.units.si.SISystem;
import com.raynigon.unit.api.core.units.si.area.SquareMetre;

import javax.measure.Unit;
import javax.measure.quantity.Illuminance;

public class Lux extends AlternateUnit<Illuminance> {

@SuppressWarnings("unchecked")
public Lux() {
super(
SISystem.ID,
"lx",
"Lux",
(Unit<Illuminance>) new Lumen().divide(new SquareMetre()),
Illuminance.class
);
}
}